diff options
| author | Armin Kuster <akuster@mvista.com> | 2016-04-25 17:29:41 -0700 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-04-29 07:41:43 +0100 |
| commit | 3f75a6478b6b6a62ddd9e086770efc84f8666928 (patch) | |
| tree | 7788f087680105dc2166fe6d7a517416635245e4 | |
| parent | 71979b2ff7a0f78892435558e27bf0779367de55 (diff) | |
| download | poky-3f75a6478b6b6a62ddd9e086770efc84f8666928.tar.gz | |
tiff: Security fixes CVE-2015-8665 and CVE-2015-8683
same fix for both CVE's
tiff <= 4.0.6
(From OE-Core rev: b7a38a45bf404b8f9b419bf7c054102d68cf2673)
Signed-off-by: Armin Kuster <akuster@mvista.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-multimedia/libtiff/files/CVE-2015-8665_8683.patch | 137 | ||||
| -rw-r--r-- | meta/recipes-multimedia/libtiff/tiff_4.0.6.bb | 1 |
2 files changed, 138 insertions, 0 deletions
diff --git a/meta/recipes-multimedia/libtiff/files/CVE-2015-8665_8683.patch b/meta/recipes-multimedia/libtiff/files/CVE-2015-8665_8683.patch new file mode 100644 index 0000000000..39c5059c75 --- /dev/null +++ b/meta/recipes-multimedia/libtiff/files/CVE-2015-8665_8683.patch | |||
| @@ -0,0 +1,137 @@ | |||
| 1 | From f94a29a822f5528d2334592760fbb7938f15eb55 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: erouault <erouault> | ||
| 3 | Date: Sat, 26 Dec 2015 17:32:03 +0000 | ||
| 4 | Subject: [PATCH] * libtiff/tif_getimage.c: fix out-of-bound reads in | ||
| 5 | TIFFRGBAImage interface in case of unsupported values of | ||
| 6 | SamplesPerPixel/ExtraSamples for LogLUV / CIELab. Add explicit call to | ||
| 7 | TIFFRGBAImageOK() in TIFFRGBAImageBegin(). Fix CVE-2015-8665 reported by | ||
| 8 | limingxing and CVE-2015-8683 reported by zzf of Alibaba. | ||
| 9 | |||
| 10 | Upstream-Status: Backport | ||
| 11 | CVE: CVE-2015-8665 | ||
| 12 | CVE: CVE-2015-8683 | ||
| 13 | https://github.com/vadz/libtiff/commit/f94a29a822f5528d2334592760fbb7938f15eb55 | ||
| 14 | |||
| 15 | Signed-off-by: Armin Kuster <akuster@mvista.com> | ||
| 16 | |||
| 17 | --- | ||
| 18 | ChangeLog | 8 ++++++++ | ||
| 19 | libtiff/tif_getimage.c | 35 ++++++++++++++++++++++------------- | ||
| 20 | 2 files changed, 30 insertions(+), 13 deletions(-) | ||
| 21 | |||
| 22 | Index: tiff-4.0.6/libtiff/tif_getimage.c | ||
| 23 | =================================================================== | ||
| 24 | --- tiff-4.0.6.orig/libtiff/tif_getimage.c | ||
| 25 | +++ tiff-4.0.6/libtiff/tif_getimage.c | ||
| 26 | @@ -182,20 +182,22 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[102 | ||
| 27 | "Planarconfiguration", td->td_planarconfig); | ||
| 28 | return (0); | ||
| 29 | } | ||
| 30 | - if( td->td_samplesperpixel != 3 ) | ||
| 31 | + if( td->td_samplesperpixel != 3 || colorchannels != 3 ) | ||
| 32 | { | ||
| 33 | sprintf(emsg, | ||
| 34 | - "Sorry, can not handle image with %s=%d", | ||
| 35 | - "Samples/pixel", td->td_samplesperpixel); | ||
| 36 | + "Sorry, can not handle image with %s=%d, %s=%d", | ||
| 37 | + "Samples/pixel", td->td_samplesperpixel, | ||
| 38 | + "colorchannels", colorchannels); | ||
| 39 | return 0; | ||
| 40 | } | ||
| 41 | break; | ||
| 42 | case PHOTOMETRIC_CIELAB: | ||
| 43 | - if( td->td_samplesperpixel != 3 || td->td_bitspersample != 8 ) | ||
| 44 | + if( td->td_samplesperpixel != 3 || colorchannels != 3 || td->td_bitspersample != 8 ) | ||
| 45 | { | ||
| 46 | sprintf(emsg, | ||
| 47 | - "Sorry, can not handle image with %s=%d and %s=%d", | ||
| 48 | + "Sorry, can not handle image with %s=%d, %s=%d and %s=%d", | ||
| 49 | "Samples/pixel", td->td_samplesperpixel, | ||
| 50 | + "colorchannels", colorchannels, | ||
| 51 | "Bits/sample", td->td_bitspersample); | ||
| 52 | return 0; | ||
| 53 | } | ||
| 54 | @@ -255,6 +257,9 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, T | ||
| 55 | int colorchannels; | ||
| 56 | uint16 *red_orig, *green_orig, *blue_orig; | ||
| 57 | int n_color; | ||
| 58 | + | ||
| 59 | + if( !TIFFRGBAImageOK(tif, emsg) ) | ||
| 60 | + return 0; | ||
| 61 | |||
| 62 | /* Initialize to normal values */ | ||
| 63 | img->row_offset = 0; | ||
| 64 | @@ -2508,29 +2513,33 @@ PickContigCase(TIFFRGBAImage* img) | ||
| 65 | case PHOTOMETRIC_RGB: | ||
| 66 | switch (img->bitspersample) { | ||
| 67 | case 8: | ||
| 68 | - if (img->alpha == EXTRASAMPLE_ASSOCALPHA) | ||
| 69 | + if (img->alpha == EXTRASAMPLE_ASSOCALPHA && | ||
| 70 | + img->samplesperpixel >= 4) | ||
| 71 | img->put.contig = putRGBAAcontig8bittile; | ||
| 72 | - else if (img->alpha == EXTRASAMPLE_UNASSALPHA) | ||
| 73 | + else if (img->alpha == EXTRASAMPLE_UNASSALPHA && | ||
| 74 | + img->samplesperpixel >= 4) | ||
| 75 | { | ||
| 76 | if (BuildMapUaToAa(img)) | ||
| 77 | img->put.contig = putRGBUAcontig8bittile; | ||
| 78 | } | ||
| 79 | - else | ||
| 80 | + else if( img->samplesperpixel >= 3 ) | ||
| 81 | img->put.contig = putRGBcontig8bittile; | ||
| 82 | break; | ||
| 83 | case 16: | ||
| 84 | - if (img->alpha == EXTRASAMPLE_ASSOCALPHA) | ||
| 85 | + if (img->alpha == EXTRASAMPLE_ASSOCALPHA && | ||
| 86 | + img->samplesperpixel >=4 ) | ||
| 87 | { | ||
| 88 | if (BuildMapBitdepth16To8(img)) | ||
| 89 | img->put.contig = putRGBAAcontig16bittile; | ||
| 90 | } | ||
| 91 | - else if (img->alpha == EXTRASAMPLE_UNASSALPHA) | ||
| 92 | + else if (img->alpha == EXTRASAMPLE_UNASSALPHA && | ||
| 93 | + img->samplesperpixel >=4 ) | ||
| 94 | { | ||
| 95 | if (BuildMapBitdepth16To8(img) && | ||
| 96 | BuildMapUaToAa(img)) | ||
| 97 | img->put.contig = putRGBUAcontig16bittile; | ||
| 98 | } | ||
| 99 | - else | ||
| 100 | + else if( img->samplesperpixel >=3 ) | ||
| 101 | { | ||
| 102 | if (BuildMapBitdepth16To8(img)) | ||
| 103 | img->put.contig = putRGBcontig16bittile; | ||
| 104 | @@ -2539,7 +2548,7 @@ PickContigCase(TIFFRGBAImage* img) | ||
| 105 | } | ||
| 106 | break; | ||
| 107 | case PHOTOMETRIC_SEPARATED: | ||
| 108 | - if (buildMap(img)) { | ||
| 109 | + if (img->samplesperpixel >=4 && buildMap(img)) { | ||
| 110 | if (img->bitspersample == 8) { | ||
| 111 | if (!img->Map) | ||
| 112 | img->put.contig = putRGBcontig8bitCMYKtile; | ||
| 113 | @@ -2635,7 +2644,7 @@ PickContigCase(TIFFRGBAImage* img) | ||
| 114 | } | ||
| 115 | break; | ||
| 116 | case PHOTOMETRIC_CIELAB: | ||
| 117 | - if (buildMap(img)) { | ||
| 118 | + if (img->samplesperpixel == 3 && buildMap(img)) { | ||
| 119 | if (img->bitspersample == 8) | ||
| 120 | img->put.contig = initCIELabConversion(img); | ||
| 121 | break; | ||
| 122 | Index: tiff-4.0.6/ChangeLog | ||
| 123 | =================================================================== | ||
| 124 | --- tiff-4.0.6.orig/ChangeLog | ||
| 125 | +++ tiff-4.0.6/ChangeLog | ||
| 126 | @@ -1,3 +1,11 @@ | ||
| 127 | +2015-12-26 Even Rouault <even.rouault at spatialys.com> | ||
| 128 | + | ||
| 129 | + * libtiff/tif_getimage.c: fix out-of-bound reads in TIFFRGBAImage | ||
| 130 | + interface in case of unsupported values of SamplesPerPixel/ExtraSamples | ||
| 131 | + for LogLUV / CIELab. Add explicit call to TIFFRGBAImageOK() in | ||
| 132 | + TIFFRGBAImageBegin(). Fix CVE-2015-8665 reported by limingxing and | ||
| 133 | + CVE-2015-8683 reported by zzf of Alibaba. | ||
| 134 | + | ||
| 135 | 2015-09-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> | ||
| 136 | |||
| 137 | * libtiff 4.0.6 released. | ||
diff --git a/meta/recipes-multimedia/libtiff/tiff_4.0.6.bb b/meta/recipes-multimedia/libtiff/tiff_4.0.6.bb index e2e24e0fb2..810a5e4c7d 100644 --- a/meta/recipes-multimedia/libtiff/tiff_4.0.6.bb +++ b/meta/recipes-multimedia/libtiff/tiff_4.0.6.bb | |||
| @@ -5,6 +5,7 @@ HOMEPAGE = "http://www.remotesensing.org/libtiff/" | |||
| 5 | 5 | ||
| 6 | SRC_URI = "ftp://ftp.remotesensing.org/pub/libtiff/tiff-${PV}.tar.gz \ | 6 | SRC_URI = "ftp://ftp.remotesensing.org/pub/libtiff/tiff-${PV}.tar.gz \ |
| 7 | file://libtool2.patch \ | 7 | file://libtool2.patch \ |
| 8 | file://CVE-2015-8665_8683.patch \ | ||
| 8 | " | 9 | " |
| 9 | 10 | ||
| 10 | SRC_URI[md5sum] = "d1d2e940dea0b5ad435f21f03d96dd72" | 11 | SRC_URI[md5sum] = "d1d2e940dea0b5ad435f21f03d96dd72" |
