mirror of
https://github.com/genodelabs/genode.git
synced 2025-05-31 22:50:54 +00:00
VFS: dir fs Opendir must open at least one directory to succeed
Ref #2745
This commit is contained in:
parent
fde056506e
commit
97f50e8e15
@ -623,6 +623,7 @@ class Vfs::Dir_file_system : public File_system
|
|||||||
Opendir_result open_composite_dirs(char const *sub_path,
|
Opendir_result open_composite_dirs(char const *sub_path,
|
||||||
Dir_vfs_handle &dir_vfs_handle)
|
Dir_vfs_handle &dir_vfs_handle)
|
||||||
{
|
{
|
||||||
|
Opendir_result res = OPENDIR_ERR_LOOKUP_FAILED;
|
||||||
try {
|
try {
|
||||||
for (File_system *fs = _first_file_system; fs; fs = fs->next) {
|
for (File_system *fs = _first_file_system; fs; fs = fs->next) {
|
||||||
Vfs_handle *sub_dir_handle = nullptr;
|
Vfs_handle *sub_dir_handle = nullptr;
|
||||||
@ -636,7 +637,6 @@ class Vfs::Dir_file_system : public File_system
|
|||||||
case OPEN_ERR_OUT_OF_RAM:
|
case OPEN_ERR_OUT_OF_RAM:
|
||||||
case OPEN_ERR_OUT_OF_CAPS:
|
case OPEN_ERR_OUT_OF_CAPS:
|
||||||
return r;
|
return r;
|
||||||
case OPENDIR_ERR_LOOKUP_FAILED:
|
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -644,12 +644,14 @@ class Vfs::Dir_file_system : public File_system
|
|||||||
new (dir_vfs_handle.alloc())
|
new (dir_vfs_handle.alloc())
|
||||||
Dir_vfs_handle::Subdir_handle_element(
|
Dir_vfs_handle::Subdir_handle_element(
|
||||||
dir_vfs_handle.subdir_handle_registry, *sub_dir_handle);
|
dir_vfs_handle.subdir_handle_registry, *sub_dir_handle);
|
||||||
|
/* return OK because at least one directory has been opened */
|
||||||
|
res = OPENDIR_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Genode::Out_of_ram) { return OPENDIR_ERR_OUT_OF_RAM; }
|
catch (Genode::Out_of_ram) { res = OPENDIR_ERR_OUT_OF_RAM; }
|
||||||
catch (Genode::Out_of_caps) { return OPENDIR_ERR_OUT_OF_CAPS; }
|
catch (Genode::Out_of_caps) { res = OPENDIR_ERR_OUT_OF_CAPS; }
|
||||||
|
|
||||||
return OPENDIR_OK;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
Opendir_result opendir(char const *path, bool create,
|
Opendir_result opendir(char const *path, bool create,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user