diff options
author | Werner Koch <[email protected]> | 2005-04-04 11:29:45 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2005-04-04 11:29:45 +0000 |
commit | d5ff07b33ce99328c7c19bd3201c0928c950d45b (patch) | |
tree | c9fa39bfd9b12f0c4e333673f797e23b6a6e0987 /src | |
parent | (struct assuan_io): Renamed elements READ and (diff) | |
download | libassuan-d5ff07b33ce99328c7c19bd3201c0928c950d45b.tar.gz libassuan-d5ff07b33ce99328c7c19bd3201c0928c950d45b.zip |
(_assuan_calloc): Avoid integer overflow.
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 4 | ||||
-rw-r--r-- | src/assuan-util.c | 17 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 3e04b78..b74f0a1 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2005-04-04 Werner Koch <[email protected]> + + * assuan-util.c (_assuan_calloc): Avoid integer overflow. + 2005-03-22 Werner Koch <[email protected]> * assuan-defs.h (struct assuan_io): Renamed elements READ and diff --git a/src/assuan-util.c b/src/assuan-util.c index 43fa91e..2c9299a 100644 --- a/src/assuan-util.c +++ b/src/assuan-util.c @@ -1,5 +1,5 @@ /* assuan-util.c - Utility functions for Assuan - * Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + * Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. * * This file is part of Assuan. * @@ -23,6 +23,7 @@ #include <stdio.h> #include <string.h> #include <ctype.h> +#include <errno.h> #include "assuan-defs.h" @@ -55,9 +56,19 @@ _assuan_realloc (void *a, size_t n) void * _assuan_calloc (size_t n, size_t m) { - void *p = _assuan_malloc (n*m); + void *p; + size_t nbytes; + + nbytes = n * m; + if (m && nbytes / m != n) + { + errno = ENOMEM; + return NULL; + } + + p = _assuan_malloc (nbytes); if (p) - memset (p, 0, n* m); + memset (p, 0, nbytes); return p; } |