diff options
author | Jeremy Allison <jra@samba.org> | 2010-02-04 16:23:32 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-02-04 16:23:32 -0800 |
commit | d8990326361c215e9da90fd587b3cd51c113376f (patch) | |
tree | a94f048d55e8a07a1a00317add0faa2cd5cb0370 | |
parent | 0c93aa3cd5dde4697cd8d2dd59229e5a77fe688b (diff) | |
download | samba-d8990326361c215e9da90fd587b3cd51c113376f.tar.gz samba-d8990326361c215e9da90fd587b3cd51c113376f.tar.bz2 samba-d8990326361c215e9da90fd587b3cd51c113376f.zip |
Fix bug 7075 - bug in vfs_scannedonly rmdir implementation.
Check for NULL on opendir, correctly call next rmdir.
Jeremy.
-rw-r--r-- | source3/modules/vfs_scannedonly.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/source3/modules/vfs_scannedonly.c b/source3/modules/vfs_scannedonly.c index 42e9aeccda..12077f374d 100644 --- a/source3/modules/vfs_scannedonly.c +++ b/source3/modules/vfs_scannedonly.c @@ -828,6 +828,9 @@ static int scannedonly_rmdir(vfs_handle_struct * handle, const char *path) path_w_slash = name_w_ending_slash(ctx,path); dirp = SMB_VFS_NEXT_OPENDIR(handle, path, NULL, 0); + if (!dirp) { + return -1; + } while ((dire = SMB_VFS_NEXT_READDIR(handle, dirp, NULL)) != NULL) { if (ISDOT(dire->d_name) || ISDOTDOT(dire->d_name)) { continue; @@ -884,7 +887,8 @@ static int scannedonly_rmdir(vfs_handle_struct * handle, const char *path) TALLOC_FREE(smb_fname); } } - return SMB_VFS_NEXT_CLOSEDIR(handle, dirp); + SMB_VFS_NEXT_CLOSEDIR(handle, dirp); + return SMB_VFS_NEXT_RMDIR(handle, path); } static void free_scannedonly_data(void **data) |