From: Stathis Kamperis Date: Fri, 11 Sep 2009 14:56:57 +0000 (+0300) Subject: getcwd: Return proper error codes. X-Git-Tag: v2.4.0~28^2 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/2ce1f68ba0d940f4cad58cd00e1e015be25f5286 getcwd: Return proper error codes. Dragonfly-bug: http://bugs.dragonflybsd.org/issue1394 Reported-by: hasso@ --- diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index 7af6f24035..bfdd17d21a 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -2421,7 +2421,7 @@ sys___getcwd(struct __getcwd_args *uap) return (ENODEV); buflen = uap->buflen; - if (buflen < 2) + if (buflen == 0) return (EINVAL); if (buflen > MAXPATHLEN) buflen = MAXPATHLEN; @@ -2470,14 +2470,14 @@ kern_getcwd(char *buf, size_t buflen, int *error) for (i = nch.ncp->nc_nlen - 1; i >= 0; i--) { if (bp == buf) { numcwdfail4++; - *error = ENOMEM; + *error = ERANGE; return(NULL); } *--bp = nch.ncp->nc_name[i]; } if (bp == buf) { numcwdfail4++; - *error = ENOMEM; + *error = ERANGE; return(NULL); } *--bp = '/'; @@ -2497,7 +2497,7 @@ kern_getcwd(char *buf, size_t buflen, int *error) if (!slash_prefixed) { if (bp == buf) { numcwdfail4++; - *error = ENOMEM; + *error = ERANGE; return(NULL); } *--bp = '/';