]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.6' into PHP-7.0
authorChristoph M. Becker <cmbecker69@gmx.de>
Sun, 21 Aug 2016 17:43:17 +0000 (19:43 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Sun, 21 Aug 2016 17:48:38 +0000 (19:48 +0200)
1  2 
NEWS
ext/gd/gd.c

diff --cc NEWS
index 7cd76808ad43da9bac0dff1c663f161ccdcc022e,a2b3aadfaa07856fd45682a0d2e2e9da2088245e..20e24b45b9946bbf3f875b276dc5a44a700e5fce
--- 1/NEWS
--- 2/NEWS
+++ b/NEWS
@@@ -20,22 -18,15 +20,23 @@@ PH
      images). (cmb)
    . Fixed bug #72913 (imagecopy() loses single-color transparency on palette
      images). (cmb)
+   . Fixed bug #68716 (possible resource leaks in _php_image_convert()). (cmb)
  
 -- JSON:
 -  . Fixed bug #72787 (json_decode reads out of bounds). (Jakub Zelenka)
 +- IMAP:
 +  . Fixed bug #72852 (imap_mail null dereference). (Anatol)
 +
 +- Intl:
 +  . Fixed bug #65732 (grapheme_*() is not Unicode compliant on CR LF
 +    sequence). (cmb)
  
 -- MSSQL:
 -  . Fixed bug #72039 (Use of uninitialised value on mssql_guid_string). (Kalle)
 +- OCI8
 +  . Fixed invalid handle error with Implicit Result Sets. (Chris Jones)
 +  . Fixed bug #72524 (Binding null values triggers ORA-24816 error). (Chris Jones)
  
  - PDO:
 +  . Fixed bug #72788 (Invalid memory access when using persistent PDO
 +    connection). (Keyur)
 +  . Fixed bug #72791 (Memory leak in PDO persistent connection handling). (Keyur)
    . Fixed bug #60665 (call to empty() on NULL result using PDO::FETCH_LAZY
      returns false). (cmb)
  
diff --cc ext/gd/gd.c
index 0346a74634b09c1399bcd5db5643b97a7f61f07e,afd3765f1525fb94a08521860c2cee0b43ea21bd..462029cc8dc612a51109908273c8fe94a7484cf7
@@@ -4070,7 -4529,8 +4070,8 @@@ static void _php_image_convert(INTERNAL
        /* Open destination file */
        dest = VCWD_FOPEN(fn_dest, "wb");
        if (!dest) {
 -              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open '%s' for writing", fn_dest);
 +              php_error_docref(NULL, E_WARNING, "Unable to open '%s' for writing", fn_dest);
+         fclose(org);
                RETURN_FALSE;
        }
  
                case PHP_GDIMG_TYPE_GIF:
                        im_org = gdImageCreateFromGif(org);
                        if (im_org == NULL) {
 -                              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open '%s' Not a valid GIF file", fn_dest);
 +                              php_error_docref(NULL, E_WARNING, "Unable to open '%s' Not a valid GIF file", fn_dest);
+                 fclose(org);
+                 fclose(dest);
                                RETURN_FALSE;
                        }
                        break;
                        ignore_warning = INI_INT("gd.jpeg_ignore_warning");
                        im_org = gdImageCreateFromJpegEx(org, ignore_warning);
                        if (im_org == NULL) {
 -                              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open '%s' Not a valid JPEG file", fn_dest);
 +                              php_error_docref(NULL, E_WARNING, "Unable to open '%s' Not a valid JPEG file", fn_dest);
+                 fclose(org);
+                 fclose(dest);
                                RETURN_FALSE;
                        }
                        break;
                case PHP_GDIMG_TYPE_PNG:
                        im_org = gdImageCreateFromPng(org);
                        if (im_org == NULL) {
 -                              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open '%s' Not a valid PNG file", fn_dest);
 +                              php_error_docref(NULL, E_WARNING, "Unable to open '%s' Not a valid PNG file", fn_dest);
+                 fclose(org);
+                 fclose(dest);
                                RETURN_FALSE;
                        }
                        break;
  #endif /* HAVE_GD_PNG */
  
                default:
 -                      php_error_docref(NULL TSRMLS_CC, E_WARNING, "Format not supported");
 +                      php_error_docref(NULL, E_WARNING, "Format not supported");
+             fclose(org);
+             fclose(dest);
                        RETURN_FALSE;
                        break;
        }
  
        im_tmp = gdImageCreate (dest_width, dest_height);
        if (im_tmp == NULL ) {
 -              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to allocate temporary buffer");
 +              php_error_docref(NULL, E_WARNING, "Unable to allocate temporary buffer");
+         fclose(dest);
+         gdImageDestroy(im_org);
                RETURN_FALSE;
        }
  
  
        gdImageDestroy(im_org);
  
-       fclose(org);
        im_dest = gdImageCreate(dest_width, dest_height);
        if (im_dest == NULL) {
 -              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to allocate destination buffer");
 +              php_error_docref(NULL, E_WARNING, "Unable to allocate destination buffer");
+         fclose(dest);
+         gdImageDestroy(im_tmp);
                RETURN_FALSE;
        }
  
        white = gdImageColorAllocate(im_dest, 255, 255, 255);
        if (white == -1) {
 -              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to allocate the colors for the destination buffer");
 +              php_error_docref(NULL, E_WARNING, "Unable to allocate the colors for the destination buffer");
+         fclose(dest);
+         gdImageDestroy(im_tmp);
+         gdImageDestroy(im_dest);
                RETURN_FALSE;
        }
  
        black = gdImageColorAllocate(im_dest, 0, 0, 0);
        if (black == -1) {
 -              php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to allocate the colors for the destination buffer");
 +              php_error_docref(NULL, E_WARNING, "Unable to allocate the colors for the destination buffer");
+         fclose(dest);
+         gdImageDestroy(im_tmp);
+         gdImageDestroy(im_dest);
                RETURN_FALSE;
        }