|
1 | 1 | /* |
2 | | - * Copyright (c) 2009 - 2022 Deutsches Elektronen-Synchroton, |
| 2 | + * Copyright (c) 2009 - 2026 Deutsches Elektronen-Synchroton, |
3 | 3 | * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY |
4 | 4 | * |
5 | 5 | * This library is free software; you can redistribute it and/or modify |
@@ -305,15 +305,17 @@ public CREATE3res NFSPROC3_CREATE_3(RpcCall call$, CREATE3args arg1) { |
305 | 305 |
|
306 | 306 | parentStat = fs.getattr(parent); |
307 | 307 |
|
308 | | - int fmode = 0644 | Stat.S_IFREG; |
| 308 | + int fmode = 0644; |
309 | 309 | Subject actualSubject = null; |
310 | 310 | if (newAttr != null) { |
311 | | - fmode = newAttr.mode.mode.value.value | Stat.S_IFREG; |
| 311 | + if (newAttr.mode.set_it) { |
| 312 | + fmode = newAttr.mode.mode.value.value; |
| 313 | + } |
312 | 314 | if (newAttr.uid.set_it || newAttr.gid.set_it) { |
313 | 315 | actualSubject = UnixSubjects.toSubject(newAttr.uid.uid.value, newAttr.gid.gid.value); |
314 | 316 | } |
315 | 317 | } |
316 | | - inode = fs.create(parent, Stat.Type.REGULAR, path, actualSubject, fmode); |
| 318 | + inode = fs.create(parent, Stat.Type.REGULAR, path, actualSubject, fmode | Stat.S_IFREG); |
317 | 319 | Stat inodeStat = fs.getattr(inode); |
318 | 320 |
|
319 | 321 | res.status = nfsstat.NFS_OK; |
@@ -607,13 +609,15 @@ public MKDIR3res NFSPROC3_MKDIR_3(RpcCall call$, MKDIR3args arg1) { |
607 | 609 | int mode = 0777; |
608 | 610 | Subject actualSubject = null; |
609 | 611 | if (attr != null) { |
610 | | - mode = attr.mode.mode.value.value | Stat.S_IFDIR; |
| 612 | + if (attr.mode.set_it) { |
| 613 | + mode = attr.mode.mode.value.value; |
| 614 | + } |
611 | 615 | if (attr.uid.set_it || attr.gid.set_it) { |
612 | 616 | actualSubject = UnixSubjects.toSubject(attr.uid.uid.value, attr.gid.gid.value); |
613 | 617 | } |
614 | 618 | } |
615 | 619 |
|
616 | | - Inode inode = fs.mkdir(parent, name, actualSubject, mode); |
| 620 | + Inode inode = fs.mkdir(parent, name, actualSubject, mode | Stat.S_IFDIR); |
617 | 621 |
|
618 | 622 | res.resok = new MKDIR3resok(); |
619 | 623 | res.resok.obj = new post_op_fh3(); |
|
0 commit comments