From a2e136a8a0c9836420db0b595c8d45c106a0663c Mon Sep 17 00:00:00 2001 From: Tim Potter Date: Fri, 23 Nov 2001 05:50:05 +0000 Subject: Finally worked out why a enumerate trusted domains was returning a NT_STATUS_UNABLE_TO_FREE_VM error. This error code was mis-defined as 0x8000001a instead of 0xc000001a. The former is actually a NT_STATUS_NO_MORE_ENTRIES warning which is what we see in the status code. Removed the & 0xffffff from the loop in get_nt_error_msg() as all the error constants now have the correct high bits set. (This used to be commit 80dca2c9e46753d87e673d712c96c76ffde0b276) --- source3/libsmb/cli_lsarpc.c | 21 ++++++++++++--------- source3/libsmb/nterr.c | 5 +++-- 2 files changed, 15 insertions(+), 11 deletions(-) (limited to 'source3/libsmb') diff --git a/source3/libsmb/cli_lsarpc.c b/source3/libsmb/cli_lsarpc.c index b533fe7449..97f604fcb5 100644 --- a/source3/libsmb/cli_lsarpc.c +++ b/source3/libsmb/cli_lsarpc.c @@ -25,7 +25,8 @@ #include "includes.h" -/** @defgroup rpc_client RPC Client +/** @defgroup lsa LSA rpc client routines + * @ingroup rpc_client * * @{ **/ @@ -37,16 +38,22 @@ * security authority", which is half of a password database. **/ -/** Opens a SMB connection to the lsa pipe +/** Opens a SMB connection and connects to the LSARPC pipe. * - * @param system_name NETBIOS name of the machine to connect to. */ + * @param cli Uninitialised client handle. + * @param system_name NETBIOS name of the machine to connect to. + * @param creds User credentials to connect as. + * @returns Initialised client handle. + */ struct cli_state *cli_lsa_initialise(struct cli_state *cli, char *system_name, struct ntuser_creds *creds) { return cli_pipe_initialise(cli, system_name, PIPE_LSARPC, creds); } -/** Open a LSA policy handle */ +/** Open a LSA policy handle + * + * @param cli Handle on an initialised SMB connection */ NTSTATUS cli_lsa_open_policy(struct cli_state *cli, TALLOC_CTX *mem_ctx, BOOL sec_qos, uint32 des_access, POLICY_HND *pol) @@ -548,12 +555,8 @@ NTSTATUS cli_lsa_enum_trust_dom(struct cli_state *cli, TALLOC_CTX *mem_ctx, result = r.status; - /* For some undocumented reason this function sometimes returns - 0x8000001a (NT_STATUS_UNABLE_TO_FREE_VM) so we ignore it and - pretend everything is OK. */ - if (!NT_STATUS_IS_OK(result) && - NT_STATUS_V(result) != NT_STATUS_V(NT_STATUS_UNABLE_TO_FREE_VM)) { + NT_STATUS_V(result) != NT_STATUS_V(NT_STATUS_NO_MORE_ENTRIES)) { /* An actual error ocured */ diff --git a/source3/libsmb/nterr.c b/source3/libsmb/nterr.c index ab0a425633..238908d6cd 100644 --- a/source3/libsmb/nterr.c +++ b/source3/libsmb/nterr.c @@ -534,6 +534,7 @@ nt_err_code_struct nt_errs[] = { "NT_STATUS_TOO_MANY_LINKS", NT_STATUS_TOO_MANY_LINKS }, { "NT_STATUS_QUOTA_LIST_INCONSISTENT", NT_STATUS_QUOTA_LIST_INCONSISTENT }, { "NT_STATUS_FILE_IS_OFFLINE", NT_STATUS_FILE_IS_OFFLINE }, + { "NT_STATUS_NO_MORE_ENTRIES", NT_STATUS_NO_MORE_ENTRIES }, { NULL, NT_STATUS(0) } }; @@ -548,8 +549,8 @@ char *get_nt_error_msg(NTSTATUS nt_code) slprintf(msg, sizeof(msg), "NT code 0x%08x", NT_STATUS_V(nt_code)); while (nt_errs[idx].nt_errstr != NULL) { - if ((NT_STATUS_V(nt_errs[idx].nt_errcode) & 0xFFFFFF) == - (NT_STATUS_V(nt_code) & 0xFFFFFF)) { + if (NT_STATUS_V(nt_errs[idx].nt_errcode) == + NT_STATUS_V(nt_code)) { return nt_errs[idx].nt_errstr; } idx++; -- cgit