| 1049 | } |
| 1050 | |
| 1051 | static bool |
| 1052 | nvlist_check_header(struct nvlist_header *nvlhdrp) |
| 1053 | { |
| 1054 | |
| 1055 | if (nvlhdrp->nvlh_magic != NVLIST_HEADER_MAGIC) { |
| 1056 | ERRNO_SET(EINVAL); |
| 1057 | return (false); |
| 1058 | } |
| 1059 | if ((nvlhdrp->nvlh_flags & ~NV_FLAG_ALL_MASK) != 0) { |
| 1060 | ERRNO_SET(EINVAL); |
| 1061 | return (false); |
| 1062 | } |
| 1063 | #if BYTE_ORDER == BIG_ENDIAN |
| 1064 | if ((nvlhdrp->nvlh_flags & NV_FLAG_BIG_ENDIAN) == 0) { |
| 1065 | nvlhdrp->nvlh_size = le64toh(nvlhdrp->nvlh_size); |
| 1066 | nvlhdrp->nvlh_descriptors = le64toh(nvlhdrp->nvlh_descriptors); |
| 1067 | } |
| 1068 | #else |
| 1069 | if ((nvlhdrp->nvlh_flags & NV_FLAG_BIG_ENDIAN) != 0) { |
| 1070 | nvlhdrp->nvlh_size = be64toh(nvlhdrp->nvlh_size); |
| 1071 | nvlhdrp->nvlh_descriptors = be64toh(nvlhdrp->nvlh_descriptors); |
| 1072 | } |
| 1073 | #endif |
| 1074 | return (true); |
| 1075 | } |
| 1076 | |
| 1077 | const unsigned char * |
| 1078 | nvlist_unpack_header(nvlist_t *nvl, const unsigned char *ptr, size_t nfds, |
no outgoing calls
no test coverage detected