Module Name: src
Committed By: dholland
Date: Fri Jan 1 19:59:21 UTC 2010
Modified Files:
src/lib/libc/gen: getcwd.c
Log Message:
POSIX says realpath(NULL, foo) is supposed to yield EINVAL rather than
being allowed to crash. Go figure. Closes PR lib/42559 from Stathis Kamperis.
To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.46 src/lib/libc/gen/getcwd.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/gen/getcwd.c
diff -u src/lib/libc/gen/getcwd.c:1.45 src/lib/libc/gen/getcwd.c:1.46
--- src/lib/libc/gen/getcwd.c:1.45 Fri Oct 26 19:48:14 2007
+++ src/lib/libc/gen/getcwd.c Fri Jan 1 19:59:21 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: getcwd.c,v 1.45 2007/10/26 19:48:14 christos Exp $ */
+/* $NetBSD: getcwd.c,v 1.46 2010/01/01 19:59:21 dholland Exp $ */
/*
* Copyright (c) 1989, 1991, 1993, 1995
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)getcwd.c 8.5 (Berkeley) 2/7/95";
#else
-__RCSID("$NetBSD: getcwd.c,v 1.45 2007/10/26 19:48:14 christos Exp $");
+__RCSID("$NetBSD: getcwd.c,v 1.46 2010/01/01 19:59:21 dholland Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -74,9 +74,14 @@
char *p, wbuf[2][MAXPATHLEN];
size_t len;
- _DIAGASSERT(path != NULL);
_DIAGASSERT(resolved != NULL);
+ /* POSIX sez we must test for this */
+ if (path == NULL) {
+ errno = EINVAL;
+ return NULL;
+ }
+
/*
* Build real path one by one with paying an attention to .,
* .. and symbolic link.