libnxflat_verify.c 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /****************************************************************************
  2. * binfmt/libnxflat/libnxflat_verify.c
  3. *
  4. * Licensed to the Apache Software Foundation (ASF) under one or more
  5. * contributor license agreements. See the NOTICE file distributed with
  6. * this work for additional information regarding copyright ownership. The
  7. * ASF licenses this file to you under the Apache License, Version 2.0 (the
  8. * "License"); you may not use this file except in compliance with the
  9. * License. You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing, software
  14. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  15. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  16. * License for the specific language governing permissions and limitations
  17. * under the License.
  18. *
  19. ****************************************************************************/
  20. /****************************************************************************
  21. * Included Files
  22. ****************************************************************************/
  23. #include <nuttx/config.h>
  24. #include <string.h>
  25. #include <debug.h>
  26. #include <errno.h>
  27. #include <arpa/inet.h>
  28. #include <nuttx/binfmt/nxflat.h>
  29. /****************************************************************************
  30. * Pre-processor Definitions
  31. ****************************************************************************/
  32. /****************************************************************************
  33. * Private Constant Data
  34. ****************************************************************************/
  35. /****************************************************************************
  36. * Private Functions
  37. ****************************************************************************/
  38. /****************************************************************************
  39. * Public Functions
  40. ****************************************************************************/
  41. /****************************************************************************
  42. * Name: nxflat_verifyheader
  43. *
  44. * Description:
  45. * Given the header from a possible NXFLAT executable, verify that it
  46. * is an NXFLAT executable.
  47. *
  48. * Returned Value:
  49. * 0 (OK) is returned on success and a negated errno is returned on
  50. * failure.
  51. *
  52. ****************************************************************************/
  53. int nxflat_verifyheader(const struct nxflat_hdr_s *header)
  54. {
  55. if (!header)
  56. {
  57. berr("NULL NXFLAT header!");
  58. return -ENOEXEC;
  59. }
  60. /* Check the FLT header -- magic number and revision.
  61. *
  62. * If the magic number does not match. Just return
  63. * silently. This is not our binary.
  64. */
  65. if (strncmp(header->h_magic, NXFLAT_MAGIC, 4) != 0)
  66. {
  67. berr("Unrecognized magic=\"%c%c%c%c\"\n",
  68. header->h_magic[0], header->h_magic[1],
  69. header->h_magic[2], header->h_magic[3]);
  70. return -ENOEXEC;
  71. }
  72. return OK;
  73. }