diff options
Diffstat (limited to 'Build/source/libs/gd/gd_security.c')
-rw-r--r-- | Build/source/libs/gd/gd_security.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Build/source/libs/gd/gd_security.c b/Build/source/libs/gd/gd_security.c new file mode 100644 index 00000000000..ae2d174378e --- /dev/null +++ b/Build/source/libs/gd/gd_security.c @@ -0,0 +1,33 @@ +/* + * gd_security.c + * + * Implements buffer overflow check routines. + * + * Written 2004, Phil Knirsch. + * Based on netpbm fixes by Alan Cox. + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <limits.h> +#include "gd.h" + +int overflow2(int a, int b) +{ + if(a < 0 || b < 0) { + fprintf(stderr, "gd warning: one parameter to a memory allocation multiplication is negative, failing operation gracefully\n"); + return 1; + } + if(b == 0) + return 0; + if(a > INT_MAX / b) { + fprintf(stderr, "gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully\n"); + return 1; + } + return 0; +} |