ref: 7c9fe270231e6061ea98c63c6de9756b6d03e1ba
parent: 22b12c38ac0bb4bf0aca0b7cc056f15f2955cc24
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri May 31 16:50:41 EDT 2024
hjfs: check mount spec (aname) in Tauth Filesystems should ensure that the mount spec (aname) is valid before handing out an auth fid. This avoids pointless authenticaiton protocols being run just for the mount later to fail. This happens with our current /lib/namespace file for the opportunistic line: mount /srv/boot /n/other other
--- a/sys/src/cmd/hjfs/9p.c
+++ b/sys/src/cmd/hjfs/9p.c
@@ -13,8 +13,10 @@
{
if((fsmain->flags & FSNOAUTH) != 0)
respond(req, "no authentication required");
- else
+ else if(*req->ifcall.aname == 0 || strcmp(req->ifcall.aname, "dump") == 0)
auth9p(req);
+ else
+ respond(req, Ebadspec);
}
static void
@@ -30,12 +32,12 @@
respond(req, "no such user");
return;
}
- if(req->ifcall.aname == nil || *req->ifcall.aname == 0)
+ if(*req->ifcall.aname == 0)
flags = 0;
else if(strcmp(req->ifcall.aname, "dump") == 0)
flags = CHFDUMP|CHFRO;
else{
- respond(req, Einval);
+ respond(req, Ebadspec);
return;
}
ch = chanattach(fsmain, flags);
--- a/sys/src/cmd/hjfs/dat.h
+++ b/sys/src/cmd/hjfs/dat.h
@@ -231,6 +231,7 @@
extern char Eperm[];
extern char Eexists[];
extern char Elocked[];
+extern char Ebadspec[];
enum { /* getblk modes */
GBREAD = 0,
--- a/sys/src/cmd/hjfs/main.c
+++ b/sys/src/cmd/hjfs/main.c
@@ -12,6 +12,7 @@
char Eperm[] = "permission denied";
char Eexists[] = "file exists";
char Elocked[] = "file locked";
+char Ebadspec[] = "bad attach specifier";
int mainstacksize = 65536;
--
⑨