]> git.cameronkatri.com Git - mandoc.git/commitdiff
fix integer overflows by using reallocarray(3)
authorIngo Schwarze <schwarze@openbsd.org>
Wed, 20 May 2015 23:00:43 +0000 (23:00 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Wed, 20 May 2015 23:00:43 +0000 (23:00 +0000)
compat_stringlist.c

index 2b26e2004c224fe2b1b0b2cc27846dd16053f9cf..05b62d382391b99459419e2e90bfc871e35a04e5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: compat_stringlist.c,v 1.2 2015/05/20 22:22:59 schwarze Exp $       */
+/*     $Id: compat_stringlist.c,v 1.3 2015/05/20 23:00:43 schwarze Exp $       */
 /*
  * Copyright (c) 1994 Christos Zoulas <christos@netbsd.org>
  * All rights reserved.
 /*
  * Copyright (c) 1994 Christos Zoulas <christos@netbsd.org>
  * All rights reserved.
@@ -48,7 +48,7 @@ sl_init(void)
 
        sl->sl_cur = 0;
        sl->sl_max = _SL_CHUNKSIZE;
 
        sl->sl_cur = 0;
        sl->sl_max = _SL_CHUNKSIZE;
-       sl->sl_str = malloc(sl->sl_max * sizeof(char *));
+       sl->sl_str = reallocarray(NULL, sl->sl_max, sizeof(char *));
        if (sl->sl_str == NULL)
                err(1, "stringlist");
        return sl;
        if (sl->sl_str == NULL)
                err(1, "stringlist");
        return sl;
@@ -63,7 +63,8 @@ sl_add(StringList *sl, char *name)
 {
        if (sl->sl_cur == sl->sl_max - 1) {
                sl->sl_max += _SL_CHUNKSIZE;
 {
        if (sl->sl_cur == sl->sl_max - 1) {
                sl->sl_max += _SL_CHUNKSIZE;
-               sl->sl_str = reallocf(sl->sl_str, sl->sl_max * sizeof(char *));
+               sl->sl_str = reallocarray(sl->sl_str,
+                   sl->sl_max, sizeof(char *));
                if (sl->sl_str == NULL)
                        return (-1);
        }
                if (sl->sl_str == NULL)
                        return (-1);
        }