Imported from libpng-0.99d.tar
diff --git a/pngmem.c b/pngmem.c
index 004288f..a698160 100644
--- a/pngmem.c
+++ b/pngmem.c
@@ -1,11 +1,11 @@
/* pngmem.c - stub functions for memory allocation
*
- * libpng 0.99c
+ * libpng 0.99d
* For conditions of distribution and use, see copyright notice in png.h
* Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
* Copyright (c) 1996, 1997 Andreas Dilger
* Copyright (c) 1998, Glenn Randers-Pehrson
- * February 7, 1998
+ * February 8, 1998
*
* This file provides a location for all memory allocation. Users which
* need special memory handling are expected to modify the code in this file
@@ -282,27 +282,22 @@
PNG_MALLOC(png_structp png_ptr, png_uint_32 size)
{
png_voidp ret;
- png_size_t length;
if (png_ptr == NULL || size == 0)
return ((png_voidp)NULL);
#ifdef PNG_MAX_MALLOC_64K
- if (png_size > (png_uint_32)65536L)
+ if (size > (png_uint_32)65536L)
png_error(png_ptr, "Cannot Allocate > 64K");
#endif
- length = (png_size_t)size;
- if ((png_uint_32)length != size)
- png_error(png_ptr, "Cannot Allocate > size_t");
-
#if defined(__TURBOC__) && !defined(__FLAT__)
- ret = farmalloc(length);
+ ret = farmalloc(size);
#else
# if defined(_MSC_VER) && defined(MAXSEG_64K)
- ret = halloc(length, 1);
+ ret = halloc(size, 1);
# else
- ret = malloc(length);
+ ret = malloc(size);
# endif
#endif
@@ -336,32 +331,29 @@
#endif /* Not Borland DOS special memory handler */
-void
-png_buffered_memcpy (png_structp png_ptr, png_voidp s1, png_voidp s2,
+png_voidp
+png_memcpy_check (png_structp png_ptr, png_voidp s1, png_voidp s2,
png_uint_32 length)
{
png_size_t size;
- png_uint_32 i;
- for (i=0; i<length; i+=65530)
- {
- size = (png_size_t)(length - i);
- if (size > (png_size_t)65530L)
- size=(png_size_t)65530L;
- png_memcpy (s1, s2, size);
- }
+
+ size = (png_size_t)length;
+ if ((png_uint_32)size != length)
+ png_error(png_ptr,"Overflow in png_memcpy_check.");
+
+ return(png_memcpy (s1, s2, size));
}
-void
-png_buffered_memset (png_structp png_ptr, png_voidp s1, int value,
+png_voidp
+png_memset_check (png_structp png_ptr, png_voidp s1, int value,
png_uint_32 length)
{
png_size_t size;
- png_uint_32 i;
- for (i=0; i<length; i+=65530)
- {
- size = length - i;
- if (size > 65530)
- size=65530;
- png_memset (s1, value, size);
- }
+
+ size = (png_size_t)length;
+ if ((png_uint_32)size != length)
+ png_error(png_ptr,"Overflow in png_memset_check.");
+
+ return (png_memset (s1, value, size));
+
}