[SCM] Samba Shared Repository - branch v3-4-test updated

Karolin Seeger kseeger at samba.org
Thu Feb 4 03:01:22 MST 2010


The branch, v3-4-test has been updated
       via  ecec9fb... s3: Simplify the code a bit: Catch (len==0) early
       via  fd63014... Fix bug 7081 - vfs_expand_msdfs doesn't work correctly (with fix identified)
      from  3a341c5... Fix bug #7072 - Accounts can't be unlocked from ldap.

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


- Log -----------------------------------------------------------------
commit ecec9fb2d283f17aee8eceb39ab61d8204cff0f3
Author: Volker Lendecke <vl at samba.org>
Date:   Wed Feb 3 14:06:25 2010 -0800

    s3: Simplify the code a bit: Catch (len==0) early
    
    Part of a fix for bug #7081.

commit fd630147319b9a21426ba2a34b726c35c03396b6
Author: Jeremy Allison <jra at samba.org>
Date:   Tue Feb 2 16:43:41 2010 -0800

    Fix bug 7081 - vfs_expand_msdfs doesn't work correctly (with fix identified)
    
    Fix inspired by idea from Eric Horst <erich at cac.washington.edu>.
    
    Jeremy.
    (cherry picked from commit de24209f0a745ada4220a1751c4ed88ae6eea575)

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

Summary of changes:
 source3/modules/vfs_expand_msdfs.c |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_expand_msdfs.c b/source3/modules/vfs_expand_msdfs.c
index 0d09d21..59f6f7a 100644
--- a/source3/modules/vfs_expand_msdfs.c
+++ b/source3/modules/vfs_expand_msdfs.c
@@ -173,20 +173,26 @@ static int expand_msdfs_readlink(struct vfs_handle_struct *handle,
 	TALLOC_CTX *ctx = talloc_tos();
 	int result;
 	char *target = TALLOC_ARRAY(ctx, char, PATH_MAX+1);
+	size_t len;
 
 	if (!target) {
 		errno = ENOMEM;
 		return -1;
 	}
+	if (bufsiz == 0) {
+		errno = EINVAL;
+		return -1;
+	}
+
 	result = SMB_VFS_NEXT_READLINK(handle, path, target,
 				       PATH_MAX);
 
-	if (result < 0)
+	if (result <= 0)
 		return result;
 
 	target[result] = '\0';
 
-	if ((strncmp(target, "msdfs:", strlen("msdfs:")) == 0) &&
+	if ((strncmp(target, "msdfs:", 6) == 0) &&
 	    (strchr_m(target, '@') != NULL)) {
 		target = expand_msdfs_target(ctx, handle->conn, target);
 		if (!target) {
@@ -195,8 +201,12 @@ static int expand_msdfs_readlink(struct vfs_handle_struct *handle,
 		}
 	}
 
-	safe_strcpy(buf, target, bufsiz-1);
-	return strlen(buf);
+	len = MIN(bufsiz, strlen(target));
+
+	memcpy(buf, target, len);
+
+	TALLOC_FREE(target);
+	return len;
 }
 
 /* VFS operations structure */


-- 
Samba Shared Repository


More information about the samba-cvs mailing list