1 #include "php_config.h" 2 3 #ifdef HAVE_GD_PNG 4 /* needs to be first */ 5 # include <png.h> 6 #endif 7 8 #ifdef HAVE_GD_JPG 9 # include <jpeglib.h> 10 #endif 11 12 #include "gd_compat.h" 13 #include "php.h" 14 15 #ifdef HAVE_GD_JPG gdJpegGetVersionInt()16int gdJpegGetVersionInt() 17 { 18 return JPEG_LIB_VERSION; 19 } 20 gdJpegGetVersionString()21const char * gdJpegGetVersionString() 22 { 23 switch(JPEG_LIB_VERSION) { 24 case 62: 25 return "6b"; 26 break; 27 28 case 70: 29 return "7"; 30 break; 31 32 case 80: 33 return "8"; 34 break; 35 36 default: 37 return "unknown"; 38 } 39 } 40 #endif 41 42 #ifdef HAVE_GD_PNG gdPngGetVersionString()43const char * gdPngGetVersionString() 44 { 45 return PNG_LIBPNG_VER_STRING; 46 } 47 #endif 48 overflow2(int a,int b)49int overflow2(int a, int b) 50 { 51 TSRMLS_FETCH(); 52 53 if(a <= 0 || b <= 0) { 54 php_error_docref(NULL TSRMLS_CC, E_WARNING, "gd warning: one parameter to a memory allocation multiplication is negative or zero, failing operation gracefully\n"); 55 return 1; 56 } 57 if(a > INT_MAX / b) { 58 php_error_docref(NULL TSRMLS_CC, E_WARNING, "gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully\n"); 59 return 1; 60 } 61 return 0; 62 } 63 64