[SCM] Samba Shared Repository - branch master updated - 7a4d937fd9e80e27d58584bc1a4d3dddc88ba74d

Stefan Metzmacher metze at samba.org
Tue Oct 28 12:50:08 GMT 2008


The branch, master has been updated
       via  7a4d937fd9e80e27d58584bc1a4d3dddc88ba74d (commit)
       via  6bc9fb887fa685a595b019c5ad6fc77f2fa3e914 (commit)
      from  2b29b7186459d945ec448694164bfe4239b30d72 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 7a4d937fd9e80e27d58584bc1a4d3dddc88ba74d
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Oct 28 12:21:44 2008 +0100

    s4: lsa-server: fix crash bugs related to [out,ref] ** changes
    
    metze

commit 6bc9fb887fa685a595b019c5ad6fc77f2fa3e914
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Oct 28 12:20:59 2008 +0100

    selftest: move gdb_* and valgrind_* scripts to selftest/
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 selftest/gdb_backtrace              |   87 +++++++++++++++++++++++++++++++++++
 selftest/gdb_backtrace_test.c       |   42 +++++++++++++++++
 selftest/gdb_run                    |   20 ++++++++
 selftest/selftest.pl                |    2 +-
 selftest/target/Samba4.pm           |    2 +-
 selftest/valgrind_run               |    9 ++++
 source4/rpc_server/lsa/dcesrv_lsa.c |    8 ++--
 source4/script/gdb_backtrace        |   87 -----------------------------------
 source4/script/gdb_backtrace_test.c |   42 -----------------
 source4/script/gdb_run              |   20 --------
 source4/script/valgrind_run         |    9 ----
 source4/selftest/config.mk          |   13 +++--
 12 files changed, 171 insertions(+), 170 deletions(-)
 create mode 100755 selftest/gdb_backtrace
 create mode 100644 selftest/gdb_backtrace_test.c
 create mode 100755 selftest/gdb_run
 create mode 100755 selftest/valgrind_run
 delete mode 100755 source4/script/gdb_backtrace
 delete mode 100644 source4/script/gdb_backtrace_test.c
 delete mode 100755 source4/script/gdb_run
 delete mode 100755 source4/script/valgrind_run


Changeset truncated at 500 lines:

diff --git a/selftest/gdb_backtrace b/selftest/gdb_backtrace
new file mode 100755
index 0000000..826381e
--- /dev/null
+++ b/selftest/gdb_backtrace
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+BASENAME=`basename $0`
+
+if [ -n "$VALGRIND" -o -n "$SMBD_VALGRIND" ]; then
+	echo "${BASENAME}: Not running debugger under valgrind"
+	exit 1
+fi
+
+# we want everything on stderr, so the program is not disturbed
+exec 1>&2
+
+BASENAME=`basename $0`
+UNAME=`uname`
+
+PID=$1
+BINARY=$2
+
+test x"${PID}" = x"" && {
+	echo "Usage: ${BASENAME} <pid> [<binary>]"
+	exit 1
+}
+
+DB_LIST="gdb"
+case "${UNAME}" in
+	#
+	# on Tru64 we need to try ladebug first
+	# because gdb crashes itself...
+	#
+	OSF1)
+		DB_LIST="ladebug ${DB_LIST}"
+	;;
+esac
+
+for DB in ${DB_LIST}; do
+	DB_BIN=`which ${DB} 2>/dev/null | grep '^/'`
+	test x"${DB_BIN}" != x"" && {
+		break
+	}
+done
+
+test x"${DB_BIN}" = x"" && {
+	echo "${BASENAME}: ERROR: No debugger found."
+	exit 1
+}
+
+#
+# we first try to use /proc/${PID}/exe
+# then fallback to the binary from the commandline
+# then we search for the commandline argument with
+# 'which'
+#
+test -f "/proc/${PID}/exe" && BINARY="/proc/${PID}/exe"
+test x"${BINARY}" = x"" && BINARY="/proc/${PID}/exe"
+test -f "${BINARY}" || BINARY=`which ${BINARY}`
+
+test -f "${BINARY}" || {
+	echo "${BASENAME}: ERROR: Cannot find binary '${BINARY}'."
+	exit 1
+}
+
+echo "${BASENAME}: Trying to use ${DB_BIN} on ${BINARY} on PID ${PID}"
+
+BATCHFILE_PRE=/tmp/gdb_backtrace_pre.$$
+BATCHFILE_MAIN=/tmp/gdb_backtrace_main.$$
+case "${DB}" in
+	ladebug)
+cat << EOF  > ${BATCHFILE_PRE}
+set \$stoponattach
+EOF
+
+cat << EOF  > ${BATCHFILE_MAIN}
+where
+quit
+EOF
+	${DB_BIN} -c "${BATCHFILE_MAIN}" -i "${BATCHFILE_PRE}" -pid "${PID}" "${BINARY}"
+	;;
+	gdb)
+cat << EOF  > ${BATCHFILE_MAIN}
+set height 1000
+bt full
+quit
+EOF
+	${DB_BIN} -x "${BATCHFILE_MAIN}" "${BINARY}" "${PID}"
+	;;
+esac
+/bin/rm -f ${BATCHFILE_PRE} ${BATCHFILE_MAIN}
diff --git a/selftest/gdb_backtrace_test.c b/selftest/gdb_backtrace_test.c
new file mode 100644
index 0000000..506784f
--- /dev/null
+++ b/selftest/gdb_backtrace_test.c
@@ -0,0 +1,42 @@
+/*
+
+add a usefull tool to test the gdb_backtrace script
+
+just compile it with
+cc -g -o gdb_backtrace_test gdb_backtrace_test.c
+
+and run it in the same directory where your gdb_backtrace script is.
+
+2006 - Stefan Metzmacher <metze at samba.org>
+
+*/
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <signal.h>
+
+static const char *prog;
+
+static void sig_fault(int sig)
+{
+	int ret;
+	char cmdstr[200];
+
+	snprintf(cmdstr, sizeof(cmdstr),
+		 "./gdb_backtrace %u %s",
+		 getpid(), prog);
+	printf("sig_fault start: %s\n", cmdstr);
+	ret = system(cmdstr);
+	printf("sig_fault end: %d\n", ret);
+}
+
+int main(int argc, const char **argv)
+{
+	prog = argv[0];
+
+	signal(SIGABRT, sig_fault);
+
+	abort();
+	return 0;
+}
diff --git a/selftest/gdb_run b/selftest/gdb_run
new file mode 100755
index 0000000..8ad101e
--- /dev/null
+++ b/selftest/gdb_run
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+ENV="$1"
+
+shift 1
+
+if test -z "$TMPDIR"; then
+	TMPDIR="/tmp"
+fi
+
+TMPFILE=$TMPDIR/gdb_run.$$
+cat << EOF  > $TMPFILE
+run
+bt
+EOF
+
+trap "/bin/rm -f $TMPFILE" EXIT
+CMD="gdb -x $TMPFILE --args $@"
+echo $CMD
+eval $ENV "$CMD"
diff --git a/selftest/selftest.pl b/selftest/selftest.pl
index 2484bd0..aa99b2e 100755
--- a/selftest/selftest.pl
+++ b/selftest/selftest.pl
@@ -573,7 +573,7 @@ sub write_clientconf($$)
 	print CF "
 	private dir = $prefix_abs/client/private
 	name resolve order = bcast
-	panic action = $srcdir_abs/script/gdb_backtrace \%PID\% \%PROG\%
+	panic action = $RealBin/gdb_backtrace \%PID\% \%PROG\%
 	max xmit = 32K
 	notify:inotify = false
 	ldb:nosync = true
diff --git a/selftest/target/Samba4.pm b/selftest/target/Samba4.pm
index 9364008..8c79a31 100644
--- a/selftest/target/Samba4.pm
+++ b/selftest/target/Samba4.pm
@@ -562,7 +562,7 @@ sub provision($$$$$$)
 	name resolve order = bcast
 	interfaces = $interfaces
 	tls dh params file = $tlsdir/dhparms.pem
-	panic action = $srcdir/script/gdb_backtrace \%PID% \%PROG%
+	panic action = $RealBin/gdb_backtrace \%PID% \%PROG%
 	wins support = yes
 	server role = $server_role
 	max xmit = 32K
diff --git a/selftest/valgrind_run b/selftest/valgrind_run
new file mode 100755
index 0000000..5171d17
--- /dev/null
+++ b/selftest/valgrind_run
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+ENV="$1"
+
+shift 1
+
+CMD="$ENV valgrind -q --db-attach=yes --num-callers=30 $@"
+echo $CMD
+eval $CMD
diff --git a/source4/rpc_server/lsa/dcesrv_lsa.c b/source4/rpc_server/lsa/dcesrv_lsa.c
index 0041c5f..6507c75 100644
--- a/source4/rpc_server/lsa/dcesrv_lsa.c
+++ b/source4/rpc_server/lsa/dcesrv_lsa.c
@@ -1387,12 +1387,12 @@ static NTSTATUS dcesrv_lsa_QueryTrustedDomainInfo(struct dcesrv_call_state *dce_
 	case LSA_TRUSTED_DOMAIN_INFO_INFO_EX2_INTERNAL:
 		/* oops, we don't want to return the info after all */
 		talloc_free(info);
-		r->out.info = NULL;
+		*r->out.info = NULL;
 		return NT_STATUS_INVALID_PARAMETER;
 	default:
 		/* oops, we don't want to return the info after all */
 		talloc_free(info);
-		r->out.info = NULL;
+		*r->out.info = NULL;
 		return NT_STATUS_INVALID_INFO_CLASS;
 	}
 
@@ -2981,8 +2981,8 @@ static NTSTATUS dcesrv_lsa_QueryDomainInformationPolicy(struct dcesrv_call_state
 							dce_call->conn->dce_ctx->lp_ctx,
 							&smb_krb5_context);
 		if (ret != 0) {
-			talloc_free(r->out.info);
-			r->out.info = NULL;
+			talloc_free(info);
+			*r->out.info = NULL;
 			return NT_STATUS_INTERNAL_ERROR;
 		}
 		k->enforce_restrictions = 0; /* FIXME, details missing from MS-LSAD 2.2.53 */
diff --git a/source4/script/gdb_backtrace b/source4/script/gdb_backtrace
deleted file mode 100755
index 826381e..0000000
--- a/source4/script/gdb_backtrace
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/sh
-
-BASENAME=`basename $0`
-
-if [ -n "$VALGRIND" -o -n "$SMBD_VALGRIND" ]; then
-	echo "${BASENAME}: Not running debugger under valgrind"
-	exit 1
-fi
-
-# we want everything on stderr, so the program is not disturbed
-exec 1>&2
-
-BASENAME=`basename $0`
-UNAME=`uname`
-
-PID=$1
-BINARY=$2
-
-test x"${PID}" = x"" && {
-	echo "Usage: ${BASENAME} <pid> [<binary>]"
-	exit 1
-}
-
-DB_LIST="gdb"
-case "${UNAME}" in
-	#
-	# on Tru64 we need to try ladebug first
-	# because gdb crashes itself...
-	#
-	OSF1)
-		DB_LIST="ladebug ${DB_LIST}"
-	;;
-esac
-
-for DB in ${DB_LIST}; do
-	DB_BIN=`which ${DB} 2>/dev/null | grep '^/'`
-	test x"${DB_BIN}" != x"" && {
-		break
-	}
-done
-
-test x"${DB_BIN}" = x"" && {
-	echo "${BASENAME}: ERROR: No debugger found."
-	exit 1
-}
-
-#
-# we first try to use /proc/${PID}/exe
-# then fallback to the binary from the commandline
-# then we search for the commandline argument with
-# 'which'
-#
-test -f "/proc/${PID}/exe" && BINARY="/proc/${PID}/exe"
-test x"${BINARY}" = x"" && BINARY="/proc/${PID}/exe"
-test -f "${BINARY}" || BINARY=`which ${BINARY}`
-
-test -f "${BINARY}" || {
-	echo "${BASENAME}: ERROR: Cannot find binary '${BINARY}'."
-	exit 1
-}
-
-echo "${BASENAME}: Trying to use ${DB_BIN} on ${BINARY} on PID ${PID}"
-
-BATCHFILE_PRE=/tmp/gdb_backtrace_pre.$$
-BATCHFILE_MAIN=/tmp/gdb_backtrace_main.$$
-case "${DB}" in
-	ladebug)
-cat << EOF  > ${BATCHFILE_PRE}
-set \$stoponattach
-EOF
-
-cat << EOF  > ${BATCHFILE_MAIN}
-where
-quit
-EOF
-	${DB_BIN} -c "${BATCHFILE_MAIN}" -i "${BATCHFILE_PRE}" -pid "${PID}" "${BINARY}"
-	;;
-	gdb)
-cat << EOF  > ${BATCHFILE_MAIN}
-set height 1000
-bt full
-quit
-EOF
-	${DB_BIN} -x "${BATCHFILE_MAIN}" "${BINARY}" "${PID}"
-	;;
-esac
-/bin/rm -f ${BATCHFILE_PRE} ${BATCHFILE_MAIN}
diff --git a/source4/script/gdb_backtrace_test.c b/source4/script/gdb_backtrace_test.c
deleted file mode 100644
index 506784f..0000000
--- a/source4/script/gdb_backtrace_test.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-
-add a usefull tool to test the gdb_backtrace script
-
-just compile it with
-cc -g -o gdb_backtrace_test gdb_backtrace_test.c
-
-and run it in the same directory where your gdb_backtrace script is.
-
-2006 - Stefan Metzmacher <metze at samba.org>
-
-*/
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <signal.h>
-
-static const char *prog;
-
-static void sig_fault(int sig)
-{
-	int ret;
-	char cmdstr[200];
-
-	snprintf(cmdstr, sizeof(cmdstr),
-		 "./gdb_backtrace %u %s",
-		 getpid(), prog);
-	printf("sig_fault start: %s\n", cmdstr);
-	ret = system(cmdstr);
-	printf("sig_fault end: %d\n", ret);
-}
-
-int main(int argc, const char **argv)
-{
-	prog = argv[0];
-
-	signal(SIGABRT, sig_fault);
-
-	abort();
-	return 0;
-}
diff --git a/source4/script/gdb_run b/source4/script/gdb_run
deleted file mode 100755
index 8ad101e..0000000
--- a/source4/script/gdb_run
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-ENV="$1"
-
-shift 1
-
-if test -z "$TMPDIR"; then
-	TMPDIR="/tmp"
-fi
-
-TMPFILE=$TMPDIR/gdb_run.$$
-cat << EOF  > $TMPFILE
-run
-bt
-EOF
-
-trap "/bin/rm -f $TMPFILE" EXIT
-CMD="gdb -x $TMPFILE --args $@"
-echo $CMD
-eval $ENV "$CMD"
diff --git a/source4/script/valgrind_run b/source4/script/valgrind_run
deleted file mode 100755
index 5171d17..0000000
--- a/source4/script/valgrind_run
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-ENV="$1"
-
-shift 1
-
-CMD="$ENV valgrind -q --db-attach=yes --num-callers=30 $@"
-echo $CMD
-eval $CMD
diff --git a/source4/selftest/config.mk b/source4/selftest/config.mk
index 43c5855..c5f7c5a 100644
--- a/source4/selftest/config.mk
+++ b/source4/selftest/config.mk
@@ -58,30 +58,31 @@ test-%::
 valgrindtest:: valgrindtest-all
 
 valgrindtest-quick:: all
-	SMBD_VALGRIND="xterm -n server -e $(srcdir)/script/valgrind_run $(LD_LIBPATH_OVERRIDE)" \
+	SMBD_VALGRIND="xterm -n server -e $(selftestdir)/valgrind_run $(LD_LIBPATH_OVERRIDE)" \
 	VALGRIND="valgrind -q --num-callers=30 --log-file=${selftest_prefix}/valgrind.log" \
 	$(SELFTEST) $(SELFTEST_QUICK_OPTS) --immediate --socket-wrapper $(TESTS)
 
 valgrindtest-all:: everything
-	SMBD_VALGRIND="xterm -n server -e $(srcdir)/script/valgrind_run $(LD_LIBPATH_OVERRIDE)" \
+	SMBD_VALGRIND="xterm -n server -e $(selftestdir)/valgrind_run $(LD_LIBPATH_OVERRIDE)" \
 	VALGRIND="valgrind -q --num-callers=30 --log-file=${selftest_prefix}/valgrind.log" \
 	$(SELFTEST) $(SELFTEST_NOSLOW_OPTS) --immediate --socket-wrapper $(TESTS)
 
 valgrindtest-env:: everything
-	SMBD_VALGRIND="xterm -n server -e $(srcdir)/script/valgrind_run $(LD_LIBPATH_OVERRIDE)" \
+	SMBD_VALGRIND="xterm -n server -e $(selftestdir)/valgrind_run $(LD_LIBPATH_OVERRIDE)" \
 	VALGRIND="valgrind -q --num-callers=30 --log-file=${selftest_prefix}/valgrind.log" \
 	$(SELFTEST) $(SELFTEST_NOSLOW_OPTS) --socket-wrapper --testenv
 
 gdbtest:: gdbtest-all
 
 gdbtest-quick:: all
-	SMBD_VALGRIND="xterm -n server -e $(srcdir)/script/gdb_run $(LD_LIBPATH_OVERRIDE)" \
+	SMBD_VALGRIND="xterm -n server -e $(selftestdir)/gdb_run $(LD_LIBPATH_OVERRIDE)" \
 	$(SELFTEST) $(SELFTEST_QUICK_OPTS) --immediate --socket-wrapper $(TESTS)
 
 gdbtest-all:: everything
-	SMBD_VALGRIND="xterm -n server -e $(srcdir)/script/gdb_run $(LD_LIBPATH_OVERRIDE)" \
+	SMBD_VALGRIND="xterm -n server -e $(selftestdir)/gdb_run $(LD_LIBPATH_OVERRIDE)" \
 	$(SELFTEST) $(SELFTEST_NOSLOW_OPTS) --immediate --socket-wrapper $(TESTS)
 
 gdbtest-env:: everything
-	SMBD_VALGRIND="xterm -n server -e $(srcdir)/script/gdb_run $(LD_LIBPATH_OVERRIDE)" \
+	SMBD_VALGRIND="xterm -n server -e $(selftestdir)/gdb_run $(LD_LIBPATH_OVERRIDE)" \
 	$(SELFTEST) $(SELFTEST_NOSLOW_OPTS) --socket-wrapper --testenv
+


-- 
Samba Shared Repository


More information about the samba-cvs mailing list