diff options
Diffstat (limited to 'fs.c')
-rw-r--r-- | fs.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -499,7 +499,10 @@ namei(char *path, int mode, uint *ret_off, char **ret_last, struct inode **ret_i for(i = 0; i < DIRSIZ && cp[i] != '/' && cp[i]; i++) if(cp[i] != ep->name[i]) break; - if((cp[i] == '\0' || cp[i] == '/') && (i >= DIRSIZ || ep->name[i] == '\0')){ + if((cp[i] == '\0' || cp[i] == '/' || i >= DIRSIZ) && + (i >= DIRSIZ || ep->name[i] == '\0')){ + while(cp[i] != '\0' && cp[i] != '/') + i++; off += (uchar*)ep - bp->data; ninum = ep->inum; brelse(bp); |