Module Name:    src
Committed By:   christos
Date:           Thu Apr 13 17:45:56 UTC 2017

Modified Files:
        src/lib/libc/gen: humanize_number.c

Log Message:
Fix out of bounds read for very large numbers (pointed out by Brooks Davis)
https://svnweb.freebsd.org/changeset/base/316766


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/lib/libc/gen/humanize_number.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/humanize_number.c
diff -u src/lib/libc/gen/humanize_number.c:1.16 src/lib/libc/gen/humanize_number.c:1.17
--- src/lib/libc/gen/humanize_number.c:1.16	Sat Mar 17 16:01:14 2012
+++ src/lib/libc/gen/humanize_number.c	Thu Apr 13 13:45:56 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: humanize_number.c,v 1.16 2012/03/17 20:01:14 christos Exp $	*/
+/*	$NetBSD: humanize_number.c,v 1.17 2017/04/13 17:45:56 christos Exp $	*/
 
 /*
  * Copyright (c) 1997, 1998, 1999, 2002 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>
 #if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: humanize_number.c,v 1.16 2012/03/17 20:01:14 christos Exp $");
+__RCSID("$NetBSD: humanize_number.c,v 1.17 2017/04/13 17:45:56 christos Exp $");
 #endif /* LIBC_SCCS and not lint */
 
 #include "namespace.h"
@@ -76,9 +76,9 @@ humanize_number(char *buf, size_t len, i
 	}
 
 #define	SCALE2PREFIX(scale)	(&prefixes[(scale) << 1])
-	maxscale = 7;
+	maxscale = 6;
 
-	if ((size_t)scale >= maxscale &&
+	if ((size_t)scale > maxscale &&
 	    (scale & (HN_AUTOSCALE | HN_GETSCALE)) == 0)
 		return (-1);
 

Reply via email to