diff options
author | Andrew Bartlett <abartlet@samba.org> | 2012-08-15 22:21:48 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2012-08-15 16:28:03 +0200 |
commit | cc3bdaaf0a5586e0f840466719f9f8387c5cddd0 (patch) | |
tree | 8400385a881a801f96e4e0cda4adc1966e83eb88 | |
parent | 898c5e140ddca47eac9e2150fb571d6eac3ed7d2 (diff) | |
download | samba-cc3bdaaf0a5586e0f840466719f9f8387c5cddd0.tar.gz samba-cc3bdaaf0a5586e0f840466719f9f8387c5cddd0.tar.bz2 samba-cc3bdaaf0a5586e0f840466719f9f8387c5cddd0.zip |
s3-vfs: Avoid loops in VFS modules: call _NEXT functions in xattr emulation
We need to call the next module in the stack otherwise we will loop if
the stat call is in turn implemented in terms of extended attribute
lookup.
Andrew Bartlett
-rw-r--r-- | source3/modules/vfs_posix_eadb.c | 4 | ||||
-rw-r--r-- | source3/modules/vfs_xattr_tdb.c | 12 |
2 files changed, 8 insertions, 8 deletions
diff --git a/source3/modules/vfs_posix_eadb.c b/source3/modules/vfs_posix_eadb.c index e1b90ffbc6..c8bebc4c0f 100644 --- a/source3/modules/vfs_posix_eadb.c +++ b/source3/modules/vfs_posix_eadb.c @@ -293,9 +293,9 @@ static int posix_eadb_unlink(vfs_handle_struct *handle, } if (lp_posix_pathnames()) { - ret = SMB_VFS_LSTAT(handle->conn, smb_fname_tmp); + ret = SMB_VFS_NEXT_LSTAT(handle, smb_fname_tmp); } else { - ret = SMB_VFS_STAT(handle->conn, smb_fname_tmp); + ret = SMB_VFS_NEXT_STAT(handle, smb_fname_tmp); } if (ret == -1) { goto out; diff --git a/source3/modules/vfs_xattr_tdb.c b/source3/modules/vfs_xattr_tdb.c index f09eec2cd8..80db90441d 100644 --- a/source3/modules/vfs_xattr_tdb.c +++ b/source3/modules/vfs_xattr_tdb.c @@ -76,7 +76,7 @@ static ssize_t xattr_tdb_fgetxattr(struct vfs_handle_struct *handle, SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context, TALLOC_FREE(frame); return -1); - if (SMB_VFS_FSTAT(fsp, &sbuf) == -1) { + if (SMB_VFS_NEXT_FSTAT(handle, fsp, &sbuf) == -1) { TALLOC_FREE(frame); return -1; } @@ -128,7 +128,7 @@ static int xattr_tdb_fsetxattr(struct vfs_handle_struct *handle, SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context, return -1); - if (SMB_VFS_FSTAT(fsp, &sbuf) == -1) { + if (SMB_VFS_NEXT_FSTAT(handle, fsp, &sbuf) == -1) { return -1; } @@ -165,7 +165,7 @@ static ssize_t xattr_tdb_flistxattr(struct vfs_handle_struct *handle, SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context, return -1); - if (SMB_VFS_FSTAT(fsp, &sbuf) == -1) { + if (SMB_VFS_NEXT_FSTAT(handle, fsp, &sbuf) == -1) { return -1; } @@ -201,7 +201,7 @@ static int xattr_tdb_fremovexattr(struct vfs_handle_struct *handle, SMB_VFS_HANDLE_GET_DATA(handle, db, struct db_context, return -1); - if (SMB_VFS_FSTAT(fsp, &sbuf) == -1) { + if (SMB_VFS_NEXT_FSTAT(handle, fsp, &sbuf) == -1) { return -1; } @@ -272,9 +272,9 @@ static int xattr_tdb_unlink(vfs_handle_struct *handle, } if (lp_posix_pathnames()) { - ret = SMB_VFS_LSTAT(handle->conn, smb_fname_tmp); + ret = SMB_VFS_NEXT_LSTAT(handle, smb_fname_tmp); } else { - ret = SMB_VFS_STAT(handle->conn, smb_fname_tmp); + ret = SMB_VFS_NEXT_STAT(handle, smb_fname_tmp); } if (ret == -1) { goto out; |