--- dietlibc-0.27/lib/alloc.c.orig 2002-08-12 17:29:23 +0400 +++ dietlibc-0.27/lib/alloc.c 2002-08-12 17:32:44 +0400 @@ -178,7 +178,8 @@ void *calloc(size_t nmemb, size_t _size) { register size_t size=_size*nmemb; - if (nmemb && size/nmemb!=_size) { + if ((nmemb | _size) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)) + && (_size && size / _size != nmemb)) { (*__errno_location())=ENOMEM; return 0; } --- dietlibc-0.27/libstdio/fwrite.c.orig 2002-08-08 16:00:51 +0400 +++ dietlibc-0.27/libstdio/fwrite.c 2002-08-12 17:34:03 +0400 @@ -11,7 +11,7 @@ stream->flags|=ERRORINDICATOR; return 0; } - if (!nmemb || len/nmemb!=size) return 0; /* check for integer overflow */ + if (!len || len/nmemb!=size) return 0; /* check for integer overflow */ if (len>stream->buflen || (stream->flags&NOBUF)) { if (fflush_unlocked(stream)) return 0; do {