Fix namec() bug with # lookups
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 15 Sep 2015 14:39:19 +0000 (10:39 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 28 Sep 2015 19:14:00 +0000 (15:14 -0400)
We shouldn't take sizeof(get_cur_genbuf()); we want the buffer's size,
not a char *'s size.

Also, the "n < 2" business seems to be allowing a #device named '/',
which I do not want.

kern/src/ns/chan.c

index 5531e66..09b160f 100644 (file)
@@ -995,8 +995,8 @@ struct chan *namec(char *aname, int amode, int omode, uint32_t perm)
                        nomount = 1;
                        get_cur_genbuf()[0] = '\0';
                        n = 0;
-                       while (*name != '\0' && (*name != '/' || n < 2)) {
-                               if (n >= sizeof(get_cur_genbuf()) - 1)
+                       while ((*name != '\0') && (*name != '/')) {
+                               if (n >= GENBUF_SZ - 1)
                                        error(Efilename);
                                get_cur_genbuf()[n++] = *name++;
                        }