summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-06-03 23:30:57 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2018-06-03 23:30:57 +0200
commit8c70c09bfdfb5857e60e2455642603a883847c14 (patch)
treeef5b1a96e25f612183a4b2efd5185bd32374f94d
parenta2623fd82a1a49ee588b1ff14b0aa472d30a5ee2 (diff)
devaoe: fix dotdot walk in devlinkdir, make perms consistent
-rw-r--r--sys/src/9/port/devaoe.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/sys/src/9/port/devaoe.c b/sys/src/9/port/devaoe.c
index ab329e434..0ef609bd1 100644
--- a/sys/src/9/port/devaoe.c
+++ b/sys/src/9/port/devaoe.c
@@ -828,7 +828,7 @@ unitgen(Chan *c, ulong type, Dir *dp)
Qid q;
d = unit2dev(UNIT(c->qid));
- perm = 0644;
+ perm = 0664;
size = 0;
vers = d->vers;
t = QTFILE;
@@ -841,7 +841,7 @@ unitgen(Chan *c, ulong type, Dir *dp)
break;
case Qdata:
p = "data";
- perm = 0640;
+ perm = 0660;
if(UP(d))
size = d->bsize;
break;
@@ -881,7 +881,7 @@ topgen(Chan *c, ulong type, Dir *d)
return -1;
case Qtopctl:
p = "ctl";
- perm = 0644;
+ perm = 0664;
break;
case Qtoplog:
p = "log";
@@ -949,24 +949,24 @@ aoegen(Chan *c, char *, Dirtab *, int, int s, Dir *dp)
return unitgen(c, TYPE(c->qid), dp);
case Qdevlinkdir:
i = UNIT(c->qid);
+ if(i >= Maxunits || i >= units.ref)
+ return -1;
+ d = unit2dev(i);
if(s == DEVDOTDOT){
mkqid(&q, QID(i, Qunitdir), 0, QTDIR);
- devdir(c, q, "devlink", 0, eve, 0555, dp);
+ devdir(c, q, unitname(d), 0, eve, 0555, dp);
return 1;
}
- if(i >= Maxunits || i >= units.ref)
- return -1;
- d = unit2dev(i);
if(s >= d->ndl)
return -1;
uprint("%d", s);
mkqid(&q, Q3(s, i, Qdevlink), 0, QTFILE);
- devdir(c, q, up->genbuf, 0, eve, 0755, dp);
+ devdir(c, q, up->genbuf, 0, eve, 0444, dp);
return 1;
case Qdevlink:
uprint("%d", s);
mkqid(&q, Q3(s, UNIT(c->qid), Qdevlink), 0, QTFILE);
- devdir(c, q, up->genbuf, 0, eve, 0755, dp);
+ devdir(c, q, up->genbuf, 0, eve, 0444, dp);
return 1;
}
}