1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-05 12:22:11 +03:00

Fix bug 7081 - vfs_expand_msdfs doesn't work correctly (with fix identified)

Fix inspired by idea from Eric Horst <erich@cac.washington.edu>.

Jeremy.
This commit is contained in:
Jeremy Allison
2010-02-02 16:43:41 -08:00
parent 110a6f29f0
commit de24209f0a

View File

@ -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 = {