[SCM] Samba Shared Repository - branch master updated - 4c68f3cd9b77414802bef08631ddb66325bfff4c

Günther Deschner gd at samba.org
Thu Oct 9 09:46:24 GMT 2008


The branch, master has been updated
       via  4c68f3cd9b77414802bef08631ddb66325bfff4c (commit)
      from  298a918e953853d3b6fbb20e5984275db083bc9b (commit)

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


- Log -----------------------------------------------------------------
commit 4c68f3cd9b77414802bef08631ddb66325bfff4c
Author: Günther Deschner <gd at samba.org>
Date:   Thu Oct 9 11:45:03 2008 +0200

    build: add "make test_wbpad" for checking winbind 32/64bit structure padding.
    
    Guenther

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

Summary of changes:
 source3/Makefile.in            |    4 ++
 source3/script/tests/wb_pad.sh |   82 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+), 0 deletions(-)
 create mode 100755 source3/script/tests/wb_pad.sh


Changeset truncated at 500 lines:

diff --git a/source3/Makefile.in b/source3/Makefile.in
index eb6a05c..0ae32a0 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -2769,6 +2769,10 @@ valgrindtest:: all torture timelimit
 	 VALGRIND="valgrind -q --num-callers=30 --log-file=${selftest_prefix}/valgrind.log" \
 	 PERL="$(PERL)" $(srcdir)/script/tests/selftest.sh ${selftest_prefix} all "${smbtorture4_path}"
 
+# Check for Winbind struct 32/64bit padding
+test_wbpad:
+	@echo "Testing winbind request/response structure for 32/64bit padding"
+	@./script/tests/wb_pad.sh || exit 1;
 
 ##
 ## Examples:
diff --git a/source3/script/tests/wb_pad.sh b/source3/script/tests/wb_pad.sh
new file mode 100755
index 0000000..f1f5ca2
--- /dev/null
+++ b/source3/script/tests/wb_pad.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+#
+# Copyright (C) Guenther Deschner 2008
+#
+# 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/>.
+
+tempdir=`mktemp -d /tmp/wb_padXXXXXX`
+test -n "$tempdir" || exit 1
+cat >> $tempdir/wb_pad.c << _EOF
+#include "nsswitch/winbind_client.h"
+
+int main(int argc, const char **argv)
+{
+	struct winbindd_request req;
+	struct winbindd_response resp;
+
+	if (argc != 2) {
+		printf("usage: %s [req|resp]\n", argv[0]);
+		return 0;
+	}
+
+	if (strcmp(argv[1], "req") == 0) {
+		printf("%d\n", (uint32_t)sizeof(req));
+	}
+	if (strcmp(argv[1], "resp") == 0) {
+		printf("%d\n", (uint32_t)sizeof(resp));
+	}
+
+	return 0;
+}
+_EOF
+
+cleanup() {
+	rm -f $tempdir/wb_pad_32 $tempdir/wb_pad_64 $tempdir/wb_pad.c
+	rmdir $tempdir
+}
+
+cflags="-I. -I./../lib/replace -Iinclude"
+${CC:-gcc} -m32 $RPM_OPT_FLAGS $CFLAGS -o $tempdir/wb_pad_32 $cflags $tempdir/wb_pad.c
+if [ $? -ne 0 ]; then
+	cleanup
+	exit 1
+fi
+${CC:-gcc} -m64 $RPM_OPT_FLAGS $CFLAGS -o $tempdir/wb_pad_64 $cflags $tempdir/wb_pad.c
+if [ $? -ne 0 ]; then
+	cleanup
+	exit 1
+fi
+
+out_64_req=`$tempdir/wb_pad_64 req`
+out_64_resp=`$tempdir/wb_pad_64 resp`
+out_32_req=`$tempdir/wb_pad_32 req`
+out_32_resp=`$tempdir/wb_pad_32 resp`
+
+cleanup
+
+if test "$out_64_req" != "$out_32_req"; then
+	echo "winbind request size differs!"
+	echo "64bit: $out_64_req"
+	echo "32bit: $out_32_req"
+	exit 1
+fi
+
+if test "$out_64_resp" != "$out_32_resp"; then
+	echo "winbind response size differs!"
+	echo "64bit: $out_64_resp"
+	echo "32bit: $out_32_resp"
+	exit 1
+fi
+
+exit 0


-- 
Samba Shared Repository


More information about the samba-cvs mailing list