The branch, master has been updated
       via  de24209... Fix bug 7081 - vfs_expand_msdfs doesn't work correctly 
(with fix identified)
      from  110a6f2... Fix bug 7063 - Samba 3.4.5 on ubuntu 8.04 64 bit - Core 
dumps.

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


- Log -----------------------------------------------------------------
commit de24209f0a745ada4220a1751c4ed88ae6eea575
Author: Jeremy Allison <[email protected]>
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 <[email protected]>.
    
    Jeremy.

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

Summary of changes:
 source3/modules/vfs_expand_msdfs.c |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_expand_msdfs.c 
b/source3/modules/vfs_expand_msdfs.c
index 9edd0f6..177ebdb 100644
--- a/source3/modules/vfs_expand_msdfs.c
+++ b/source3/modules/vfs_expand_msdfs.c
@@ -173,11 +173,17 @@ 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);
 
@@ -186,7 +192,7 @@ static int expand_msdfs_readlink(struct vfs_handle_struct 
*handle,
 
        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,15 @@ static int expand_msdfs_readlink(struct vfs_handle_struct 
*handle,
                }
        }
 
-       safe_strcpy(buf, target, bufsiz-1);
-       return strlen(buf);
+       len = MIN(bufsiz, strlen(target));
+       if (len) {
+               memcpy(buf, target, len);
+       } else {
+               errno = ENOENT;
+               return -1;
+       }
+       TALLOC_FREE(target);
+       return len;
 }
 
 static struct vfs_fn_pointers vfs_expand_msdfs_fns = {


-- 
Samba Shared Repository

Reply via email to