add missing permissions check in vfs mk*()

This commit is contained in:
Lisa Milne 2023-12-03 13:23:28 +10:00
parent cc03c96982
commit 2dcce5b399

View file

@ -1624,6 +1624,17 @@ clite.vfs = {
return true;
return false;
}
function checkCanWrite(uid,node) {
if (!uid)
return true;
if (node.perms[8] == 'w')
return true;
if (clite.user.checkGID(uid,node.gid) && node.perms[5] == 'w')
return true;
if (node.uid == uid && node.perms[2] == 'w')
return true;
return false;
}
function mkNode() {
var fsnode = {
name: '',
@ -1697,6 +1708,8 @@ clite.vfs = {
var parent = vfsdata.api.getNode(uid,dir);
if (!parent || !parent.data.isdir)
return false;
if (!checkCanWrite(uid,parent))
return false;
var n = mkNode();
n.name = name;
n.data.parent = parent;
@ -1719,6 +1732,8 @@ clite.vfs = {
var parent = vfsdata.api.getNode(0,dir);
if (!parent || !parent.data.isdir)
return false;
if (!checkCanWrite(uid,parent))
return false;
var n = mkNode();
n.name = name;
n.data.parent = parent;
@ -1740,6 +1755,8 @@ clite.vfs = {
var parent = vfsdata.api.getNode(uid,dir);
if (!parent || !parent.data.isdir)
return false;
if (!checkCanWrite(uid,parent))
return false;
var n = mkNode();
n.name = name;
n.data.parent = parent;