[libpng16] Initialized btoa[] in pngstest.c; stop memory leak in png_handle_eXIf()

when returning with an error.
diff --git a/ANNOUNCE b/ANNOUNCE
index fb2cc72..8168de3 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -39,6 +39,10 @@
 Version 1.6.32beta02 [August 1, 2017]
   Updated contrib/libtests/pngunknown.c with eXIf chunk.
 
+Version 1.6.32beta03 [August 1, 2017]
+  Initialized btoa[] in pngstest.c
+  Stop memory leak when returning from png_handle_eXIf() with an error.
+
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 (subscription required; visit
 https://lists.sourceforge.net/lists/listinfo/png-mng-implement
diff --git a/CHANGES b/CHANGES
index 8935d26..174db2c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -5922,6 +5922,10 @@
 Version 1.6.32beta02 [August 1, 2017]
   Updated contrib/libtests/pngunknown.c with eXIf chunk.
 
+Version 1.6.32beta03 [August 1, 2017]
+  Initialized btoa[] in pngstest.c
+  Stop memory leak when returning from png_handle_eXIf() with an error.
+
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 (subscription required; visit
 https://lists.sourceforge.net/lists/listinfo/png-mng-implement
diff --git a/contrib/libtests/pngstest.c b/contrib/libtests/pngstest.c
index 0617dbb..ab45089 100644
--- a/contrib/libtests/pngstest.c
+++ b/contrib/libtests/pngstest.c
@@ -2610,9 +2610,9 @@
    const unsigned int b_sample = PNG_IMAGE_SAMPLE_SIZE(formatb);
    int alpha_added, alpha_removed;
    int bchannels;
-   int btoa[4];
    png_uint_32 y;
    Transform tr;
+   int btoa[4]={0,0,0,0};
 
    /* This should never happen: */
    if (width != b->image.width || height != b->image.height)
diff --git a/pngrutil.c b/pngrutil.c
index f0e1728..3be7c17 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -2039,7 +2039,10 @@
    }
 
    if (png_crc_finish(png_ptr, 0) != 0)
+   {
+      png_free(png_ptr, eXIf_buf);
       return;
+   }
 
    png_set_eXIf_1(png_ptr, info_ptr, length, eXIf_buf);