^samba3.blackbox.test_symlink_traversal.SMB2.symlink_traversal_SMB2\(fileserver\)
^samba3.blackbox.test_symlink_traversal.SMB1.symlink_traversal_SMB1\(fileserver_smb1_done\)
-^samba3.blackbox.test_symlink_traversal.SMB1.posix.symlink_traversal_SMB1_posix\(fileserver_smb1_done\)
-^samba3.blackbox.smbclient_s3.*.Ensure\ widelinks\ are\ restricted\(.*\)
-^samba3.blackbox.smbclient_s3.*.follow\ symlinks\ \=\ no\(.*\)
bool allow_symlinks = true;
const char *conn_rootdir;
size_t rootdir_len;
+ bool parent_dir_checked = false;
DBG_DEBUG("check_reduced_name [%s] [%s]\n", fname, conn->connectpath);
if (resolved_name == NULL) {
return NT_STATUS_NO_MEMORY;
}
+ parent_dir_checked = true;
} else {
resolved_name = resolved_fname->base_name;
}
conn_rootdir,
resolved_name);
TALLOC_FREE(resolved_fname);
- return NT_STATUS_ACCESS_DENIED;
+ if (parent_dir_checked) {
+ /* Part of a component path. */
+ return NT_STATUS_OBJECT_PATH_NOT_FOUND;
+ } else {
+ /* End of a path. */
+ return NT_STATUS_OBJECT_NAME_NOT_FOUND;
+ }
}
}
p);
TALLOC_FREE(resolved_fname);
TALLOC_FREE(new_fname);
- return NT_STATUS_ACCESS_DENIED;
+ if (parent_dir_checked) {
+ /* Part of a component path. */
+ return NT_STATUS_OBJECT_PATH_NOT_FOUND;
+ } else {
+ /* End of a path. */
+ return NT_STATUS_OBJECT_NAME_NOT_FOUND;
+ }
}
}