From a6c28c9779da5f0b98a1698d66eae0708e395e7d Mon Sep 17 00:00:00 2001 From: rtm Date: Sat, 26 Aug 2006 15:06:59 +0000 Subject: mkdir check error from mknod chdir return -1 if target not a dir --- syscall.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'syscall.c') diff --git a/syscall.c b/syscall.c index 8571cca..9e256a8 100644 --- a/syscall.c +++ b/syscall.c @@ -320,6 +320,8 @@ sys_mkdir(void) return -1; nip = mknod (cp->mem + arg0, T_DIR, 0, 0); + if(nip == 0) + return -1; memset (de.name, '\0', DIRSIZ); de.name[0] = '.'; @@ -356,7 +358,7 @@ sys_chdir(void) if ((ip = namei(cp->mem + arg0, NAMEI_LOOKUP, 0, 0, 0)) == 0) return -1; - + if (ip == cp->cwd) { iput (ip); return 0; @@ -364,7 +366,7 @@ sys_chdir(void) if (ip->type != T_DIR) { iput(ip); - return 0; + return -1; } idecref(cp->cwd); -- cgit v1.2.3