| 1123 | } |
| 1124 | |
| 1125 | const unsigned char * |
| 1126 | nvpair_unpack(bool isbe, const unsigned char *ptr, size_t *leftp, |
| 1127 | nvpair_t **nvpp) |
| 1128 | { |
| 1129 | nvpair_t *nvp, *tmp; |
| 1130 | |
| 1131 | nvp = nv_calloc(1, sizeof(*nvp) + NV_NAME_MAX); |
| 1132 | if (nvp == NULL) |
| 1133 | return (NULL); |
| 1134 | nvp->nvp_name = (char *)(nvp + 1); |
| 1135 | |
| 1136 | ptr = nvpair_unpack_header(isbe, nvp, ptr, leftp); |
| 1137 | if (ptr == NULL) |
| 1138 | goto fail; |
| 1139 | tmp = nv_realloc(nvp, sizeof(*nvp) + strlen(nvp->nvp_name) + 1); |
| 1140 | if (tmp == NULL) |
| 1141 | goto fail; |
| 1142 | nvp = tmp; |
| 1143 | |
| 1144 | /* Update nvp_name after realloc(). */ |
| 1145 | nvp->nvp_name = (char *)(nvp + 1); |
| 1146 | nvp->nvp_data = 0x00; |
| 1147 | nvp->nvp_magic = NVPAIR_MAGIC; |
| 1148 | *nvpp = nvp; |
| 1149 | return (ptr); |
| 1150 | fail: |
| 1151 | nv_free(nvp); |
| 1152 | return (NULL); |
| 1153 | } |
| 1154 | |
| 1155 | int |
| 1156 | nvpair_type(const nvpair_t *nvp) |
no test coverage detected