static enum ndr_err_code ndr_pull_frsapi_Info(struct ndr_pull *ndr, int ndr_flags, struct frsapi_Info *r) { if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 4)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length)); NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length2)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1)); NDR_CHECK(ndr_pull_frsapi_InfoEnum(ndr, NDR_SCALARS, &r->level)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->query_counter)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->offset)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->blob_len)); { uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); { struct ndr_pull *_ndr_blob; NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_blob, 0, r->length - r->offset)); NDR_CHECK(ndr_pull_DATA_BLOB(_ndr_blob, NDR_SCALARS, &r->blob)); NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_blob, 0, r->length - r->offset)); } ndr->flags = _flags_save_DATA_BLOB; } NDR_CHECK(ndr_pull_trailer_align(ndr, 4)); } if (ndr_flags & NDR_BUFFERS) { } return NDR_ERR_SUCCESS; }
static enum ndr_err_code ndr_pull_DATA_BLOB_REM(struct ndr_pull *ndr, int ndr_flags, struct DATA_BLOB_REM *r) { if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 4)); { uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->remaining)); ndr->flags = _flags_save_DATA_BLOB; } } if (ndr_flags & NDR_BUFFERS) { } return NDR_ERR_SUCCESS; }
_PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattr(struct ndr_pull *ndr, int ndr_flags, struct tdb_xattr *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_UTF8|LIBNDR_FLAG_STR_NULLTERM); NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name)); ndr->flags = _flags_save_string; } NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->value)); } if (ndr_flags & NDR_BUFFERS) { } return NDR_ERR_SUCCESS; }
/* Manually modified to handle the dom_sid being optional based on if it is present (size is non-zero) or not */ enum ndr_err_code ndr_pull_NETLOGON_SAM_LOGON_REQUEST(struct ndr_pull *ndr, int ndr_flags, struct NETLOGON_SAM_LOGON_REQUEST *r) { if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 4)); NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->request_count)); { uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->computer_name)); ndr->flags = _flags_save_string; } { uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->user_name)); ndr->flags = _flags_save_string; } { 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->mailslot_name)); ndr->flags = _flags_save_string; } NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->acct_control)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sid_size)); if (r->sid_size) { uint32_t _flags_save_DATA_BLOB = ndr->flags; struct ndr_pull *_ndr_sid; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_ALIGN4); NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->_pad)); ndr->flags = _flags_save_DATA_BLOB; NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_sid, 0, r->sid_size)); NDR_CHECK(ndr_pull_dom_sid0(_ndr_sid, NDR_SCALARS|NDR_BUFFERS, &r->sid)); NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_sid, 0, r->sid_size)); } else { ZERO_STRUCT(r->sid); } NDR_CHECK(ndr_pull_netlogon_nt_version_flags(ndr, NDR_SCALARS, &r->nt_version)); NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lmnt_token)); NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm20_token)); } if (ndr_flags & NDR_BUFFERS) { } return NDR_ERR_SUCCESS; }
_PUBLIC_ enum ndr_err_code ndr_pull_PAC_SIGNATURE_DATA(struct ndr_pull *ndr, int ndr_flags, struct PAC_SIGNATURE_DATA *r) { { uint32_t _flags_save_STRUCT = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX); if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 4)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->type)); { uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->signature)); ndr->flags = _flags_save_DATA_BLOB; } } if (ndr_flags & NDR_BUFFERS) { } ndr->flags = _flags_save_STRUCT; } return NDR_ERR_SUCCESS; }
static enum ndr_err_code ndr_pull_dnsRecordData(struct ndr_pull *ndr, int ndr_flags, union dnsRecordData *r) { uint32_t level; level = ndr_pull_get_switch_value(ndr, r); if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_union_align(ndr, 4)); switch (level) { case DNS_TYPE_TOMBSTONE: { NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->timestamp)); break; } case DNS_TYPE_A: { { uint32_t _flags_save_ipv4address = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); NDR_CHECK(ndr_pull_ipv4address(ndr, NDR_SCALARS, &r->ipv4)); ndr->flags = _flags_save_ipv4address; } break; } case DNS_TYPE_NS: { NDR_CHECK(ndr_pull_dnsp_name(ndr, NDR_SCALARS, &r->ns)); break; } case DNS_TYPE_CNAME: { NDR_CHECK(ndr_pull_dnsp_name(ndr, NDR_SCALARS, &r->cname)); break; } case DNS_TYPE_SOA: { { uint32_t _flags_save_dnsp_soa = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); NDR_CHECK(ndr_pull_dnsp_soa(ndr, NDR_SCALARS, &r->soa)); ndr->flags = _flags_save_dnsp_soa; } break; } case DNS_TYPE_MX: { { uint32_t _flags_save_dnsp_mx = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); NDR_CHECK(ndr_pull_dnsp_mx(ndr, NDR_SCALARS, &r->mx)); ndr->flags = _flags_save_dnsp_mx; } break; } case DNS_TYPE_TXT: { NDR_CHECK(ndr_pull_dnsp_string(ndr, NDR_SCALARS, &r->txt)); break; } case DNS_TYPE_PTR: { NDR_CHECK(ndr_pull_dnsp_name(ndr, NDR_SCALARS, &r->ptr)); break; } case DNS_TYPE_HINFO: { NDR_CHECK(ndr_pull_dnsp_hinfo(ndr, NDR_SCALARS, &r->hinfo)); break; } case DNS_TYPE_AAAA: { NDR_CHECK(ndr_pull_ipv6address(ndr, NDR_SCALARS, &r->ipv6)); break; } case DNS_TYPE_SRV: { { uint32_t _flags_save_dnsp_srv = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); NDR_CHECK(ndr_pull_dnsp_srv(ndr, NDR_SCALARS, &r->srv)); ndr->flags = _flags_save_dnsp_srv; } break; } default: { { uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->data)); ndr->flags = _flags_save_DATA_BLOB; } break; } } } if (ndr_flags & NDR_BUFFERS) { switch (level) { case DNS_TYPE_TOMBSTONE: break; case DNS_TYPE_A: break; case DNS_TYPE_NS: break; case DNS_TYPE_CNAME: break; case DNS_TYPE_SOA: break; case DNS_TYPE_MX: break; case DNS_TYPE_TXT: break; case DNS_TYPE_PTR: break; case DNS_TYPE_HINFO: break; case DNS_TYPE_AAAA: break; case DNS_TYPE_SRV: break; default: break; } } return NDR_ERR_SUCCESS; }
_PUBLIC_ enum ndr_err_code ndr_pull_winreg_Data(struct ndr_pull *ndr, int ndr_flags, union winreg_Data *r) { int level; { uint32_t _flags_save_UNION = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN); level = ndr_pull_get_switch_value(ndr, r); if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_union_align(ndr, 4)); switch (level) { case REG_NONE: { break; } case REG_SZ: { { uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string)); ndr->flags = _flags_save_string; } break; } case REG_EXPAND_SZ: { { uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string)); ndr->flags = _flags_save_string; } break; } case REG_BINARY: { { uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->binary)); ndr->flags = _flags_save_DATA_BLOB; } break; } case REG_DWORD: { NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value)); break; } case REG_DWORD_BIG_ENDIAN: { { uint32_t _flags_save_uint32 = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value)); ndr->flags = _flags_save_uint32; } break; } case REG_MULTI_SZ: { { uint32_t _flags_save_string_array = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array)); ndr->flags = _flags_save_string_array; } break; } default: { { uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->data)); ndr->flags = _flags_save_DATA_BLOB; } break; } } } if (ndr_flags & NDR_BUFFERS) { switch (level) { case REG_NONE: break; case REG_SZ: break; case REG_EXPAND_SZ: break; case REG_BINARY: break; case REG_DWORD: break; case REG_DWORD_BIG_ENDIAN: break; case REG_MULTI_SZ: break; default: break; } } ndr->flags = _flags_save_UNION; } return NDR_ERR_SUCCESS; }