diff options
author | Günther Deschner <gd@samba.org> | 2008-10-29 23:21:06 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2008-10-31 12:42:09 +0100 |
commit | 7f8bc6a2d904bd5b5c056ec96a68ee928659324a (patch) | |
tree | ec6bd17b0d0b8544a9bff4d473b9d457488488e1 | |
parent | e311becaad4945c31bc7e3bec5e4be6073c94e82 (diff) | |
download | samba-7f8bc6a2d904bd5b5c056ec96a68ee928659324a.tar.gz samba-7f8bc6a2d904bd5b5c056ec96a68ee928659324a.tar.bz2 samba-7f8bc6a2d904bd5b5c056ec96a68ee928659324a.zip |
errors: share dcerpc error function.
Guenther
-rw-r--r-- | librpc/rpc/dcerpc_error.c (renamed from source4/librpc/rpc/dcerpc_error.c) | 10 | ||||
-rw-r--r-- | source3/Makefile.in | 2 | ||||
-rw-r--r-- | source3/include/proto.h | 4 | ||||
-rw-r--r-- | source3/libsmb/dcerpc_err.c | 55 | ||||
-rw-r--r-- | source3/rpc_client/cli_pipe.c | 2 | ||||
-rw-r--r-- | source3/rpc_parse/parse_prs.c | 2 | ||||
-rw-r--r-- | source4/librpc/config.mk | 4 |
7 files changed, 12 insertions, 67 deletions
diff --git a/source4/librpc/rpc/dcerpc_error.c b/librpc/rpc/dcerpc_error.c index 6ea4563ae6..dbab783567 100644 --- a/source4/librpc/rpc/dcerpc_error.c +++ b/librpc/rpc/dcerpc_error.c @@ -1,20 +1,20 @@ -/* +/* Unix SMB/CIFS implementation. dcerpc fault functions 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 <http://www.gnu.org/licenses/>. */ @@ -37,7 +37,7 @@ static const struct dcerpc_fault_table dcerpc_faults[] = { "DCERPC_FAULT_OTHER", DCERPC_FAULT_OTHER }, { "DCERPC_FAULT_ACCESS_DENIED", DCERPC_FAULT_ACCESS_DENIED }, - { NULL, 0} + { NULL, 0} }; _PUBLIC_ const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code) 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 <http://www.gnu.org/licenses/>. - */ - -#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); diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk index a988dcf420..b2b9f2e7a7 100644 --- a/source4/librpc/config.mk +++ b/source4/librpc/config.mk @@ -613,8 +613,8 @@ dcerpc_VERSION = 0.0.1 dcerpc_SOVERSION = 0 dcerpc_OBJ_FILES = $(addprefix $(dcerpcsrcdir)/, dcerpc.o dcerpc_auth.o dcerpc_schannel.o dcerpc_util.o \ - dcerpc_error.o dcerpc_smb.o dcerpc_smb2.o dcerpc_sock.o dcerpc_connect.o dcerpc_secondary.o) \ - ../librpc/rpc/binding.o + dcerpc_smb.o dcerpc_smb2.o dcerpc_sock.o dcerpc_connect.o dcerpc_secondary.o) \ + ../librpc/rpc/binding.o ../librpc/rpc/dcerpc_error.o $(eval $(call proto_header_template,$(dcerpcsrcdir)/dcerpc_proto.h,$(dcerpc_OBJ_FILES:.o=.c))) |