changeset 13100:2569f04244aa

6750055 man command crashes when given "-M <executable file> <keyword>"
author Rich Burridge <rich.burridge@oracle.com>
date Thu, 12 Aug 2010 08:33:09 -0700
parents baf8bd9f8381
children 08bbd228b732
files usr/src/cmd/man/src/man.c
diffstat 1 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/cmd/man/src/man.c	Thu Aug 12 08:27:14 2010 -0700
+++ b/usr/src/cmd/man/src/man.c	Thu Aug 12 08:33:09 2010 -0700
@@ -619,6 +619,7 @@
 	char *mandir = MANDIR;
 	int s;
 	struct dupnode *didup = NULL;
+	struct stat sb;
 
 	s = sizeof (struct man_node);
 	for (p = pathv; *p; ) {
@@ -631,6 +632,10 @@
 			*p = mand;
 		}
 		q = split(*p, ',');
+		if (stat(q[0], &sb) != 0 || (sb.st_mode & S_IFDIR) == 0) {
+			freev(q);
+			goto next;
+		}
 
 		if (access(q[0], R_OK|X_OK) != 0) {
 			if (catmando) {
@@ -1461,10 +1466,12 @@
 freev(char **v)
 {
 	int i;
-	for (i = 0; v[i] != NULL; i++) {
-		free(v[i]);
+	if (v != NULL) {
+		for (i = 0; v[i] != NULL; i++) {
+			free(v[i]);
+		}
+		free(v);
 	}
-	free(v);
 }
 
 /*