summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2008-10-29 23:21:06 +0100
committerGünther Deschner <gd@samba.org>2008-10-31 12:42:09 +0100
commit7f8bc6a2d904bd5b5c056ec96a68ee928659324a (patch)
treeec6bd17b0d0b8544a9bff4d473b9d457488488e1
parente311becaad4945c31bc7e3bec5e4be6073c94e82 (diff)
downloadsamba-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.in2
-rw-r--r--source3/include/proto.h4
-rw-r--r--source3/libsmb/dcerpc_err.c55
-rw-r--r--source3/rpc_client/cli_pipe.c2
-rw-r--r--source3/rpc_parse/parse_prs.c2
-rw-r--r--source4/librpc/config.mk4
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)))