diff options
Diffstat (limited to 'user/openjpeg')
-rw-r--r-- | user/openjpeg/APKBUILD | 36 | ||||
-rw-r--r-- | user/openjpeg/CVE-2019-12973.patch | 152 |
2 files changed, 19 insertions, 169 deletions
diff --git a/user/openjpeg/APKBUILD b/user/openjpeg/APKBUILD index e454afa61..07174ca8b 100644 --- a/user/openjpeg/APKBUILD +++ b/user/openjpeg/APKBUILD @@ -1,29 +1,23 @@ -# Contributor: William Pitcock <nenolod@dereferenced.org> +# Contributor: Ariadne Conill <ariadne@dereferenced.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org> pkgname=openjpeg -pkgver=2.3.1 -pkgrel=2 +pkgver=2.5.0 +pkgrel=0 pkgdesc="Open-source implementation of JPEG 2000 image codec" -url="http://www.openjpeg.org/" +url="https://www.openjpeg.org/" arch="all" options="!check" # No test suite. license="BSD-2-Clause-NetBSD" +depends="" depends_dev="$pkgname-tools" makedepends="libpng-dev tiff-dev lcms2-dev doxygen cmake" subpackages="$pkgname-dev $pkgname-tools" -source="$pkgname-$pkgver.tar.gz::https://github.com/uclouvain/openjpeg/archive/v$pkgver.tar.gz - CVE-2019-12973.patch" - -build() { - cmake . \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo \ - -DOPENJPEG_INSTALL_LIB_DIR=lib \ - -DOPENJPEG_INSTALL_PACKAGE_DIR=lib/cmake/$pkgname-${pkgver%.*} - make -} +source="$pkgname-$pkgver.tar.gz::https://github.com/uclouvain/openjpeg/archive/v$pkgver.tar.gz" # secfixes: +# 2.3.1-r3: +# - CVE-2020-6851 +# - CVE-2020-8112 # 2.3.1-r2: # - CVE-2019-12973 # 2.3.0-r0: @@ -40,6 +34,15 @@ build() { # - CVE-2016-9580 # - CVE-2016-9581 +build() { + cmake . \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DOPENJPEG_INSTALL_LIB_DIR=lib \ + -DOPENJPEG_INSTALL_PACKAGE_DIR=lib/cmake/$pkgname-${pkgver%.*} + make +} + package() { make DESTDIR="$pkgdir" install } @@ -50,5 +53,4 @@ tools() { mv "$pkgdir"/usr/bin "$subpkgdir"/usr/ } -sha512sums="339fbc899bddf2393d214df71ed5d6070a3a76b933b1e75576c8a0ae9dfcc4adec40bdc544f599e4b8d0bc173e4e9e7352408497b5b3c9356985605830c26c03 openjpeg-2.3.1.tar.gz -472deba1d521553f9c7af805ba3d0c4fc31564fd36e37c598646f468b7d05bf5f81d2320fd6fadf8c0e3344ebce7bc0d04cece55a1b3cec2ef693a6e65bd2516 CVE-2019-12973.patch" +sha512sums="08975a2dd79f1e29fd1824249a5fbe66026640ed787b3a3aa8807c2c69f994240ff33e2132f8bf15bbc2202bef7001f98e42d487231d4eebc8e503538658049a openjpeg-2.5.0.tar.gz" diff --git a/user/openjpeg/CVE-2019-12973.patch b/user/openjpeg/CVE-2019-12973.patch deleted file mode 100644 index 0d330ae6d..000000000 --- a/user/openjpeg/CVE-2019-12973.patch +++ /dev/null @@ -1,152 +0,0 @@ -From 21399f6b7d318fcdf4406d5e88723c4922202aa3 Mon Sep 17 00:00:00 2001 -From: Young Xiao <YangX92@hotmail.com> -Date: Sat, 16 Mar 2019 19:57:27 +0800 -Subject: [PATCH 1/2] convertbmp: detect invalid file dimensions early - -width/length dimensions read from bmp headers are not necessarily -valid. For instance they may have been maliciously set to very large -values with the intention to cause DoS (large memory allocation, stack -overflow). In these cases we want to detect the invalid size as early -as possible. - -This commit introduces a counter which verifies that the number of -written bytes corresponds to the advertized width/length. - -See commit 8ee335227bbc for details. - -Signed-off-by: Young Xiao <YangX92@hotmail.com> ---- - src/bin/jp2/convertbmp.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/src/bin/jp2/convertbmp.c b/src/bin/jp2/convertbmp.c -index 0af52f816..ec34f535b 100644 ---- a/src/bin/jp2/convertbmp.c -+++ b/src/bin/jp2/convertbmp.c -@@ -622,13 +622,13 @@ static OPJ_BOOL bmp_read_rle8_data(FILE* IN, OPJ_UINT8* pData, - static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, - OPJ_UINT32 stride, OPJ_UINT32 width, OPJ_UINT32 height) - { -- OPJ_UINT32 x, y; -+ OPJ_UINT32 x, y, written; - OPJ_UINT8 *pix; - const OPJ_UINT8 *beyond; - - beyond = pData + stride * height; - pix = pData; -- x = y = 0U; -+ x = y = written = 0U; - while (y < height) { - int c = getc(IN); - if (c == EOF) { -@@ -642,6 +642,7 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, - for (j = 0; (j < c) && (x < width) && - ((OPJ_SIZE_T)pix < (OPJ_SIZE_T)beyond); j++, x++, pix++) { - *pix = (OPJ_UINT8)((j & 1) ? (c1 & 0x0fU) : ((c1 >> 4) & 0x0fU)); -+ written++; - } - } else { /* absolute mode */ - c = getc(IN); -@@ -671,6 +672,7 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, - c1 = (OPJ_UINT8)getc(IN); - } - *pix = (OPJ_UINT8)((j & 1) ? (c1 & 0x0fU) : ((c1 >> 4) & 0x0fU)); -+ written++; - } - if (((c & 3) == 1) || ((c & 3) == 2)) { /* skip padding byte */ - getc(IN); -@@ -678,6 +680,10 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, - } - } - } /* while(y < height) */ -+ if (written != width * height) { -+ fprintf(stderr, "warning, image's actual size does not match advertized one\n"); -+ return OPJ_FALSE; -+ } - return OPJ_TRUE; - } - - -From 3aef207f90e937d4931daf6d411e092f76d82e66 Mon Sep 17 00:00:00 2001 -From: Young Xiao <YangX92@hotmail.com> -Date: Sat, 16 Mar 2019 20:09:59 +0800 -Subject: [PATCH 2/2] bmp_read_rle4_data(): avoid potential infinite loop - ---- - src/bin/jp2/convertbmp.c | 32 ++++++++++++++++++++++++++------ - 1 file changed, 26 insertions(+), 6 deletions(-) - -diff --git a/src/bin/jp2/convertbmp.c b/src/bin/jp2/convertbmp.c -index ec34f535b..2fc4e9bc4 100644 ---- a/src/bin/jp2/convertbmp.c -+++ b/src/bin/jp2/convertbmp.c -@@ -632,12 +632,18 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, - while (y < height) { - int c = getc(IN); - if (c == EOF) { -- break; -+ return OPJ_FALSE; - } - - if (c) { /* encoded mode */ -- int j; -- OPJ_UINT8 c1 = (OPJ_UINT8)getc(IN); -+ int j, c1_int; -+ OPJ_UINT8 c1; -+ -+ c1_int = getc(IN); -+ if (c1_int == EOF) { -+ return OPJ_FALSE; -+ } -+ c1 = (OPJ_UINT8)c1_int; - - for (j = 0; (j < c) && (x < width) && - ((OPJ_SIZE_T)pix < (OPJ_SIZE_T)beyond); j++, x++, pix++) { -@@ -647,7 +653,7 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, - } else { /* absolute mode */ - c = getc(IN); - if (c == EOF) { -- break; -+ return OPJ_FALSE; - } - - if (c == 0x00) { /* EOL */ -@@ -658,8 +664,14 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, - break; - } else if (c == 0x02) { /* MOVE by dxdy */ - c = getc(IN); -+ if (c == EOF) { -+ return OPJ_FALSE; -+ } - x += (OPJ_UINT32)c; - c = getc(IN); -+ if (c == EOF) { -+ return OPJ_FALSE; -+ } - y += (OPJ_UINT32)c; - pix = pData + y * stride + x; - } else { /* 03 .. 255 : absolute mode */ -@@ -669,13 +681,21 @@ static OPJ_BOOL bmp_read_rle4_data(FILE* IN, OPJ_UINT8* pData, - for (j = 0; (j < c) && (x < width) && - ((OPJ_SIZE_T)pix < (OPJ_SIZE_T)beyond); j++, x++, pix++) { - if ((j & 1) == 0) { -- c1 = (OPJ_UINT8)getc(IN); -+ int c1_int; -+ c1_int = getc(IN); -+ if (c1_int == EOF) { -+ return OPJ_FALSE; -+ } -+ c1 = (OPJ_UINT8)c1_int; - } - *pix = (OPJ_UINT8)((j & 1) ? (c1 & 0x0fU) : ((c1 >> 4) & 0x0fU)); - written++; - } - if (((c & 3) == 1) || ((c & 3) == 2)) { /* skip padding byte */ -- getc(IN); -+ c = getc(IN); -+ if (c == EOF) { -+ return OPJ_FALSE; -+ } - } - } - } |