summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOkan Demirmen <okan@cvs.openbsd.org>2012-11-16 14:15:49 +0000
committerOkan Demirmen <okan@cvs.openbsd.org>2012-11-16 14:15:49 +0000
commitdf62854e4575813a1e5a57625d99b9f266b0cafd (patch)
tree11688fe2cb38564ec1d83f322106f649de8875b2
parent8c0b9a29cc37b38638970b5187e048ebf931ea2b (diff)
add some checks
-rw-r--r--app/cwm/xmalloc.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/app/cwm/xmalloc.c b/app/cwm/xmalloc.c
index b41da2e33..8e9d22ab2 100644
--- a/app/cwm/xmalloc.c
+++ b/app/cwm/xmalloc.c
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: xmalloc.c,v 1.9 2012/11/09 03:52:02 okan Exp $
+ * $OpenBSD: xmalloc.c,v 1.10 2012/11/16 14:15:48 okan Exp $
*/
#include <sys/param.h>
@@ -23,6 +23,7 @@
#include <err.h>
#include <errno.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -35,6 +36,8 @@ xmalloc(size_t siz)
{
void *p;
+ if (siz == 0)
+ errx(1, "xmalloc: zero size");
if ((p = malloc(siz)) == NULL)
err(1, "malloc");
@@ -46,6 +49,10 @@ xcalloc(size_t no, size_t siz)
{
void *p;
+ if (siz == 0 || no == 0)
+ errx(1, "xcalloc: zero size");
+ if (SIZE_MAX / no < siz)
+ errx(1, "xcalloc: no * siz > SIZE_MAX");
if ((p = calloc(no, siz)) == NULL)
err(1, "calloc");