| 869 | #endif |
| 870 | |
| 871 | const unsigned char * |
| 872 | nvpair_unpack_binary(bool isbe __unused, nvpair_t *nvp, |
| 873 | const unsigned char *ptr, size_t *leftp) |
| 874 | { |
| 875 | void *value; |
| 876 | |
| 877 | PJDLOG_ASSERT(nvp->nvp_type == NV_TYPE_BINARY); |
| 878 | |
| 879 | if (*leftp < nvp->nvp_datasize || nvp->nvp_datasize == 0) { |
| 880 | ERRNO_SET(EINVAL); |
| 881 | return (NULL); |
| 882 | } |
| 883 | |
| 884 | value = nv_malloc(nvp->nvp_datasize); |
| 885 | if (value == NULL) |
| 886 | return (NULL); |
| 887 | |
| 888 | memcpy(value, ptr, nvp->nvp_datasize); |
| 889 | ptr += nvp->nvp_datasize; |
| 890 | *leftp -= nvp->nvp_datasize; |
| 891 | |
| 892 | nvp->nvp_data = (uint64_t)(uintptr_t)value; |
| 893 | |
| 894 | return (ptr); |
| 895 | } |
| 896 | |
| 897 | const unsigned char * |
| 898 | nvpair_unpack_bool_array(bool isbe __unused, nvpair_t *nvp, |
no test coverage detected