root/gd_compat.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. gdJpegGetVersionInt
  2. gdJpegGetVersionString
  3. gdPngGetVersionString
  4. overflow2

#include "php_config.h"

#ifdef HAVE_GD_PNG
/* needs to be first */
# include <png.h>
#endif

#ifdef HAVE_GD_JPG
# include <jpeglib.h>
#endif

#include "gd_compat.h"
#include "php.h"

#ifdef HAVE_GD_JPG
int gdJpegGetVersionInt()
{
        return JPEG_LIB_VERSION;
}

const char * gdJpegGetVersionString()
{
        switch(JPEG_LIB_VERSION) {
                case 62:
                        return "6b";
                        break;

                case 70:
                        return "7";
                        break;

                case 80:
                        return "8";
                        break;

                default:
                        return "unknown";
        }
}
#endif

#ifdef HAVE_GD_PNG
const char * gdPngGetVersionString()
{
        return PNG_LIBPNG_VER_STRING;
}
#endif

int overflow2(int a, int b)
{
        TSRMLS_FETCH();

        if(a <= 0 || b <= 0) {
                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");
                return 1;
        }
        if(a > INT_MAX / b) {
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully\n");
                return 1;
        }
        return 0;
}


/* [<][>][^][v][top][bottom][index][help] */