union smb_fsinfo *fsinfo)
{
NTSTATUS status = NT_STATUS_OK;
- enum ndr_err_code ndr_err;
int i;
/* parse the results */
case RAW_QFS_OBJECTID_INFORMATION:
QFS_CHECK_SIZE(64);
- ndr_err = ndr_pull_struct_blob(&blob, mem_ctx, NULL, &fsinfo->objectid_information.out.guid,
- (ndr_pull_flags_fn_t)ndr_pull_GUID);
- if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
- status = ndr_map_error2ntstatus(ndr_err);
- }
+ status = GUID_from_ndr_blob(&blob, &fsinfo->objectid_information.out.guid);
+ NT_STATUS_NOT_OK_RETURN(status);
for (i=0;i<6;i++) {
fsinfo->objectid_information.out.unknown[i] = BVAL(blob.data, 16 + i*8);
}
pull a GUID structure from the wire. The buffer must be at least 16
bytes long
*/
-enum ndr_err_code smbcli_pull_guid(void *base, uint16_t offset,
- struct GUID *guid)
+NTSTATUS smbcli_pull_guid(void *base, uint16_t offset,
+ struct GUID *guid)
{
DATA_BLOB blob;
- TALLOC_CTX *tmp_ctx = talloc_new(NULL);
- enum ndr_err_code ndr_err;
ZERO_STRUCTP(guid);
blob.data = offset + (uint8_t *)base;
blob.length = 16;
- ndr_err = ndr_pull_struct_blob(&blob, tmp_ctx, NULL, guid,
- (ndr_pull_flags_fn_t)ndr_pull_GUID);
- talloc_free(tmp_ctx);
- return ndr_err;
+
+ return GUID_from_ndr_blob(&blob, guid);
}
/*
struct smb2_negprot *io)
{
NTSTATUS status;
- enum ndr_err_code ndr_err;
if (!smb2_request_receive(req) ||
smb2_request_is_error(req)) {
io->out.security_mode = SVAL(req->in.body, 0x02);
io->out.dialect_revision = SVAL(req->in.body, 0x04);
io->out.reserved = SVAL(req->in.body, 0x06);
- ndr_err = smbcli_pull_guid(req->in.body, 0x08, &io->in.client_guid);
- if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+ status = smbcli_pull_guid(req->in.body, 0x08, &io->in.client_guid);
+ if (!NT_STATUS_IS_OK(status)) {
smb2_request_destroy(req);
- return NT_STATUS_INTERNAL_ERROR;
+ return status;
}
io->out.capabilities = IVAL(req->in.body, 0x18);
io->out.max_transact_size = IVAL(req->in.body, 0x1C);