Skip to content

Commit f5bbd68

Browse files
committed
Forbid renaming directories
1 parent 428d83f commit f5bbd68

File tree

3 files changed

+8
-4
lines changed

3 files changed

+8
-4
lines changed

pthreadfs/examples/emscripten-tests/rename.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ void test() {
8080
assert(err == -1);
8181
assert(errno == ENOTDIR);
8282

83+
#ifndef PTHREADFS_NO_DIR_RENAME
8384
// can't overwrite a non-empty folder
8485
err = rename("persistent/dir", "persistent/dir-nonempty");
8586
assert(err == -1);
@@ -99,6 +100,7 @@ void test() {
99100
err = rename("persistent/dir/subdir", "persistent/dir");
100101
assert(err == -1);
101102
assert(errno == ENOTEMPTY);
103+
#endif // PTHREADFS_NO_DIR_RENAME
102104

103105
// do some valid renaming
104106
err = rename("persistent/dir/file", "persistent/dir/file1");

pthreadfs/library_pthreadfs.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -3187,8 +3187,9 @@ mergeInto(LibraryManager.library, {
31873187

31883188
rename: async function (oldNode, newParentNode, newName) {
31893189
FSAFS.debug('rename', arguments);
3190-
if (oldNode.contents && Object.keys(oldNode.contents).length > 0) {
3191-
throw new PThreadFS.ErrnoError({{{ cDefine('ENOTEMPTY') }}});
3190+
if (PThreadFS.isDir(oldNode.mode)) {
3191+
console.log('Rename error: File System Access does not support renaming directories');
3192+
throw new PThreadFS.ErrnoError({{{ cDefine('EXDEV') }}});
31923193
}
31933194
try {
31943195
await oldNode.localReference.move(newParentNode.localReference, newName);

pthreadfs/src/js/library_fsafs.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,9 @@ mergeInto(LibraryManager.library, {
189189

190190
rename: async function (oldNode, newParentNode, newName) {
191191
FSAFS.debug('rename', arguments);
192-
if (oldNode.contents && Object.keys(oldNode.contents).length > 0) {
193-
throw new PThreadFS.ErrnoError({{{ cDefine('ENOTEMPTY') }}});
192+
if (PThreadFS.isDir(oldNode.mode)) {
193+
console.log('Rename error: File System Access does not support renaming directories');
194+
throw new PThreadFS.ErrnoError({{{ cDefine('EXDEV') }}});
194195
}
195196
try {
196197
await oldNode.localReference.move(newParentNode.localReference, newName);

0 commit comments

Comments
 (0)