_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosAttrib(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosAttrib *r) { if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 4)); NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->version)); NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->version)); NDR_CHECK(ndr_pull_xattr_DosInfo(ndr, NDR_SCALARS, &r->info)); } if (ndr_flags & NDR_BUFFERS) { } return NDR_ERR_SUCCESS; }
_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DOSATTRIB(struct ndr_pull *ndr, int ndr_flags, struct xattr_DOSATTRIB *r) { if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 4)); { uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM); NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->attrib_hex)); ndr->flags = _flags_save_string; } if (ndr->offset >= ndr->data_size) { unsigned int dosattr; int ret; if (r->attrib_hex[0] != '0') { } if (r->attrib_hex[1] != 'x') { } ret = sscanf(r->attrib_hex, "%x", &dosattr); if (ret != 1) { } r->version = 0xFFFF; r->info.compatinfoFFFF.attrib = dosattr; return NDR_ERR_SUCCESS; } NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->version)); if (r->version == 0xFFFF) { return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "ndr_pull_xattr_DOSATTRIB: " "invalid level 0x%02X", r->version); } NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->version)); NDR_CHECK(ndr_pull_xattr_DosInfo(ndr, NDR_SCALARS, &r->info)); } if (ndr_flags & NDR_BUFFERS) { } return NDR_ERR_SUCCESS; }