[SCM] Samba Shared Repository - branch v3-3-test updated - release-3-2-0pre2-5259-gc66b380

Karolin Seeger kseeger at samba.org
Wed May 13 09:58:51 GMT 2009


The branch, v3-3-test has been updated
       via  c66b3807a356655d1d4e351502cad939f4d1d101 (commit)
      from  b2205a7697598729f85cb767621b8c610654053c (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test


- Log -----------------------------------------------------------------
commit c66b3807a356655d1d4e351502cad939f4d1d101
Author: Jeremy Allison <jra at samba.org>
Date:   Fri May 8 11:31:34 2009 -0700

    Fix bug #6330 - DFS doesn't work on AIX. Jeremy.
    
    This was commit 3d6f4a7af in master.

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

Summary of changes:
 source/configure.in |   10 ++++++++++
 source/smbd/msdfs.c |    4 ++++
 tests/readlink.c    |   33 +++++++++++++++++++++++++++++++++
 3 files changed, 47 insertions(+), 0 deletions(-)
 create mode 100644 tests/readlink.c


Changeset truncated at 500 lines:

diff --git a/source/configure.in b/source/configure.in
index 68b4119..b350d81 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -5927,6 +5927,16 @@ fi
 
 AC_HAVE_DECL(splice, [#include <fcntl.h>])
 
+############################################
+# See if we have the a broken readlink syscall.
+
+AC_CACHE_CHECK([for a broken readlink syscall],samba_cv_HAVE_BROKEN_READLINK,[
+AC_TRY_RUN([#include "${srcdir-.}/../tests/readlink.c"],
+	samba_cv_HAVE_BROKEN_READLINK=no,samba_cv_HAVE_BROKEN_READLINK=yes,samba_cv_HAVE_BROKEN_READLINK=cross)
+])
+if test x"$samba_cv_HAVE_BROKEN_READLINK" = x"yes"; then
+	AC_DEFINE(HAVE_BROKEN_READLINK,1,[Whether the readlink syscall is broken])
+fi
 
 #################################################
 # Check whether winbind is supported on this platform.  If so we need to
diff --git a/source/smbd/msdfs.c b/source/smbd/msdfs.c
index 1504b19..52b395e 100644
--- a/source/smbd/msdfs.c
+++ b/source/smbd/msdfs.c
@@ -402,7 +402,11 @@ static bool is_msdfs_link_internal(TALLOC_CTX *ctx,
 {
 	SMB_STRUCT_STAT st;
 	int referral_len = 0;
+#if defined(HAVE_BROKEN_READLINK)
+	char link_target_buf[PATH_MAX];
+#else
 	char link_target_buf[7];
+#endif
 	size_t bufsize = 0;
 	char *link_target = NULL;
 
diff --git a/tests/readlink.c b/tests/readlink.c
new file mode 100644
index 0000000..a07e62a
--- /dev/null
+++ b/tests/readlink.c
@@ -0,0 +1,33 @@
+/* test whether readlink returns a short buffer correctly. */
+
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#define DATA "readlink.test"
+#define FNAME "rdlnk.file"
+
+main()
+{
+	int buf[7];
+	int ret;
+	ssize_t rl_ret;
+
+	unlink(FNAME);
+	ret = symlink(DATA, FNAME);
+	if (ret == -1) {
+		exit(1);
+	}
+
+	rl_ret = readlink(FNAME, buf, sizeof(buf));
+	if (rl_ret == -1) {
+		unlink(FNAME);
+		exit(1);
+	}
+	unlink(FNAME);
+	exit(0);
+}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list