svn commit: r195839 - head/usr.bin/locate/locate

John Baldwin jhb at FreeBSD.org
Fri Jul 24 13:40:26 UTC 2009


Author: jhb
Date: Fri Jul 24 13:40:25 2009
New Revision: 195839
URL: http://svn.freebsd.org/changeset/base/195839

Log:
  Move the check to ensure the locate database has the minimum required size
  when using mmap() before invoking mmap().  This avoids a confusing error
  message when locate is invoked against a zero-size database after the
  recent change to make mmap() fail requests to map 0 bytes.
  
  Submitted by:	Jaakko Heinonen  jh of saunalahti dot fi
  Approved by:	re (kensmith)
  MFC after:	1 week

Modified:
  head/usr.bin/locate/locate/fastfind.c
  head/usr.bin/locate/locate/locate.c

Modified: head/usr.bin/locate/locate/fastfind.c
==============================================================================
--- head/usr.bin/locate/locate/fastfind.c	Thu Jul 23 21:12:21 2009	(r195838)
+++ head/usr.bin/locate/locate/fastfind.c	Fri Jul 24 13:40:25 2009	(r195839)
@@ -154,9 +154,6 @@ fastfind
 
 	/* init bigram table */
 #ifdef FF_MMAP
-	if (len < (2*NBG))
-		errx(1, "database too small: %s", database);
-	
 	for (c = 0, p = bigram1, s = bigram2; c < NBG; c++, len-= 2) {
 		p[c] = check_bigram_char(*paddr++);
 		s[c] = check_bigram_char(*paddr++);

Modified: head/usr.bin/locate/locate/locate.c
==============================================================================
--- head/usr.bin/locate/locate/locate.c	Thu Jul 23 21:12:21 2009	(r195838)
+++ head/usr.bin/locate/locate/locate.c	Fri Jul 24 13:40:25 2009	(r195839)
@@ -291,6 +291,8 @@ search_mmap(db, s)
 	    fstat(fd, &sb) == -1)
 		err(1, "`%s'", db);
 	len = sb.st_size;
+	if (len < (2*NBG))
+		errx(1, "database too small: %s", db);
 
 	if ((p = mmap((caddr_t)0, (size_t)len,
 		      PROT_READ, MAP_SHARED,


More information about the svn-src-head mailing list