From 7f8bc6a2d904bd5b5c056ec96a68ee928659324a Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 23:21:06 +0100 Subject: errors: share dcerpc error function. Guenther --- source3/Makefile.in | 2 +- source3/include/proto.h | 4 ++-- source3/libsmb/dcerpc_err.c | 55 ------------------------------------------- source3/rpc_client/cli_pipe.c | 2 +- source3/rpc_parse/parse_prs.c | 2 +- 5 files changed, 5 insertions(+), 60 deletions(-) delete mode 100644 source3/libsmb/dcerpc_err.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index eae7dad7a6..c737b32468 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -406,7 +406,7 @@ LIBNMB_OBJ = libsmb/unexpected.o libsmb/namecache.o libsmb/nmblib.o \ NTERR_OBJ = libsmb/nterr.o DOSERR_OBJ = libsmb/doserr.o ERRORMAP_OBJ = libsmb/errormap.o -DCE_RPC_ERR_OBJ = libsmb/dcerpc_err.o +DCE_RPC_ERR_OBJ = ../librpc/rpc/dcerpc_error.o LIBSMB_ERR_OBJ0 = $(NTERR_OBJ) $(DOSERR_OBJ) $(ERRORMAP_OBJ) $(DCE_RPC_ERR_OBJ) \ libsmb/smbdes.o libsmb/smbencrypt.o libsmb/ntlmssp_parse.o diff --git a/source3/include/proto.h b/source3/include/proto.h index f982f43a7f..65dda2ac3d 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -3072,9 +3072,9 @@ bool netlogon_creds_client_check(const struct dcinfo *dc, void netlogon_creds_client_step(struct dcinfo *dc, struct netr_Authenticator *next_cred_out); -/* The following definitions come from libsmb/dcerpc_err.c */ +/* The following definitions come from ../librpc/rpc/dcerpc_error.c */ -const char *dcerpc_errstr(uint32 fault_code); +const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code); /* The following definitions come from libsmb/doserr.c */ diff --git a/source3/libsmb/dcerpc_err.c b/source3/libsmb/dcerpc_err.c deleted file mode 100644 index 900b8d769f..0000000000 --- a/source3/libsmb/dcerpc_err.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Unix SMB/CIFS implementation. - * Copyright (C) Stefan Metzmacher 2004 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - */ - -#include "includes.h" - -struct dcerpc_fault_table { - const char *errstr; - uint32_t faultcode; -}; - -static const struct dcerpc_fault_table dcerpc_faults[] = -{ - { "DCERPC_FAULT_OP_RNG_ERROR", DCERPC_FAULT_OP_RNG_ERROR }, - { "DCERPC_FAULT_UNK_IF", DCERPC_FAULT_UNK_IF }, - { "DCERPC_FAULT_NDR", DCERPC_FAULT_NDR }, - { "DCERPC_FAULT_INVALID_TAG", DCERPC_FAULT_INVALID_TAG }, - { "DCERPC_FAULT_CONTEXT_MISMATCH", DCERPC_FAULT_CONTEXT_MISMATCH }, - { "DCERPC_FAULT_OTHER", DCERPC_FAULT_OTHER }, - { "DCERPC_FAULT_ACCESS_DENIED", DCERPC_FAULT_ACCESS_DENIED }, - - { NULL, 0} -}; - -const char *dcerpc_errstr(uint32 fault_code) -{ - char *result; - int idx = 0; - - while (dcerpc_faults[idx].errstr != NULL) { - if (dcerpc_faults[idx].faultcode == fault_code) { - return dcerpc_faults[idx].errstr; - } - idx++; - } - - result = talloc_asprintf(talloc_tos(), "DCERPC fault 0x%08x", - fault_code); - SMB_ASSERT(result != NULL); - return result; -} diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c index ca9d3392e7..f0c2f6709e 100644 --- a/source3/rpc_client/cli_pipe.c +++ b/source3/rpc_client/cli_pipe.c @@ -751,7 +751,7 @@ static NTSTATUS cli_pipe_validate_current_pdu(struct rpc_pipe_client *cli, RPC_H DEBUG(1, ("cli_pipe_validate_current_pdu: RPC fault " "code %s received from %s!\n", - dcerpc_errstr(NT_STATUS_V(fault_resp.status)), + dcerpc_errstr(debug_ctx(), NT_STATUS_V(fault_resp.status)), rpccli_pipe_txt(debug_ctx(), cli))); if (NT_STATUS_IS_OK(fault_resp.status)) { return NT_STATUS_UNSUCCESSFUL; diff --git a/source3/rpc_parse/parse_prs.c b/source3/rpc_parse/parse_prs.c index 5eb6c31ee6..504cebbb9d 100644 --- a/source3/rpc_parse/parse_prs.c +++ b/source3/rpc_parse/parse_prs.c @@ -812,7 +812,7 @@ bool prs_dcerpc_status(const char *name, prs_struct *ps, int depth, NTSTATUS *st } DEBUG(5,("%s%04x %s: %s\n", tab_depth(5,depth), ps->data_offset, name, - dcerpc_errstr(NT_STATUS_V(*status)))); + dcerpc_errstr(debug_ctx(), NT_STATUS_V(*status)))); ps->data_offset += sizeof(uint32); -- cgit