svn commit: r197793 - head/lib/libc/gen

Xin LI delphij at FreeBSD.org
Mon Oct 5 21:11:05 UTC 2009


Author: delphij
Date: Mon Oct  5 21:11:04 2009
New Revision: 197793
URL: http://svn.freebsd.org/changeset/base/197793

Log:
  fts_open() requires that the list passed as argument to contain at least
  one path.  When the list is empty (contain only a NULL pointer), return
  EINVAL instead of pretending to succeed, which will cause a NULL pointer
  deference in a later fts_read() call.
  
  Noticed by:	Christoph Mallon (via rdivacky@)
  MFC after:	2 weeks

Modified:
  head/lib/libc/gen/fts.3
  head/lib/libc/gen/fts.c

Modified: head/lib/libc/gen/fts.3
==============================================================================
--- head/lib/libc/gen/fts.3	Mon Oct  5 20:38:36 2009	(r197792)
+++ head/lib/libc/gen/fts.3	Mon Oct  5 21:11:04 2009	(r197793)
@@ -28,7 +28,7 @@
 .\"     @(#)fts.3	8.5 (Berkeley) 4/16/94
 .\" $FreeBSD$
 .\"
-.Dd January 26, 2008
+.Dd October 5, 2009
 .Dt FTS 3
 .Os
 .Sh NAME
@@ -776,7 +776,7 @@ may fail and set
 as follows:
 .Bl -tag -width Er
 .It Bq Er EINVAL
-The options were invalid.
+The options were invalid, or the list were empty.
 .El
 .Sh SEE ALSO
 .Xr find 1 ,

Modified: head/lib/libc/gen/fts.c
==============================================================================
--- head/lib/libc/gen/fts.c	Mon Oct  5 20:38:36 2009	(r197792)
+++ head/lib/libc/gen/fts.c	Mon Oct  5 21:11:04 2009	(r197793)
@@ -124,6 +124,12 @@ fts_open(argv, options, compar)
 		return (NULL);
 	}
 
+	/* fts_open() requires at least one path */
+	if (*argv == NULL) {
+		errno = EINVAL;
+		return (NULL);
+	}
+
 	/* Allocate/initialize the stream. */
 	if ((priv = malloc(sizeof(*priv))) == NULL)
 		return (NULL);


More information about the svn-src-all mailing list