Comments
Patch
new file mode 100644
@@ -0,0 +1,33 @@
+Index: libexif/exif-entry.c
+===================================================================
+RCS file: /cvsroot/libexif/libexif/libexif/exif-entry.c,v
+retrieving revision 1.146
+retrieving revision 1.147
+diff -c -u -r1.146 -r1.147
+--- a/libexif/exif-entry.c 12 Jul 2012 17:10:34 -0000 1.146
++++ b/libexif/exif-entry.c 12 Jul 2012 17:12:24 -0000 1.147
+@@ -1346,10 +1346,23 @@
+ case EXIF_TAG_XP_AUTHOR:
+ case EXIF_TAG_XP_KEYWORDS:
+ case EXIF_TAG_XP_SUBJECT:
++ {
++ /* Sanity check the size to prevent overflow */
++ if (e->size+sizeof(unsigned short) < e->size) break;
++
++ /* The tag may not be U+0000-terminated , so make a local
++ U+0000-terminated copy before converting it */
++ unsigned short *utf16 = exif_mem_alloc (e->priv->mem, e->size+sizeof(unsigned short));
++ if (!utf16) break;
++ memcpy(utf16, e->data, e->size);
++ utf16[e->size/sizeof(unsigned short)] = 0;
++
+ /* Warning! The texts are converted from UTF16 to UTF8 */
+ /* FIXME: use iconv to convert into the locale encoding */
+- exif_convert_utf16_to_utf8(val, (unsigned short*)e->data, MIN(maxlen, e->size));
++ exif_convert_utf16_to_utf8(val, utf16, maxlen);
++ exif_mem_free(e->priv->mem, utf16);
+ break;
++ }
+
+ default:
+ /* Use a generic value formatting */
@@ -4,7 +4,10 @@ SECTION = "libs"
LICENSE = "LGPLv2.1"
LIC_FILES_CHKSUM = "file://COPYING;md5=243b725d71bb5df4a1e5920b344b86ad"
-SRC_URI = "${SOURCEFORGE_MIRROR}/libexif/libexif-${PV}.tar.bz2"
+PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libexif/libexif-${PV}.tar.bz2 \
+ file://0001-libexif-CVE-2012-2813.patch"
SRC_URI[md5sum] = "19844ce6b5d075af16f0d45de1e8a6a3"
SRC_URI[sha256sum] = "a772d20bd8fb9802d7f0d70fde6ac8872f87d0c66c52b0d14026dafcaa83d715"