From 66f614c51f017b0693f5aaeb5897db28ef3aff6c Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Fri, 24 Aug 2018 19:43:58 +0200 Subject: [PATCH] app-arch/bzip2: fix an error reported by ubsan Use unsigned 1 for shifting instead of signed 1. Fix an issue with shift caught by undefined behavior sanitizer in clang. bzip2-1.0.6/blocksort.c:255:7 runtime error: left shift of 1 by 31 places cannot be represented in type 'int'. Closes: https://github.com/gentoo/gentoo/pull/9688 Signed-off-by: Thomas Deutschmann --- ...1.0.6-r9.ebuild => bzip2-1.0.6-r10.ebuild} | 1 + .../bzip2/files/bzip2-1.0.6-ubsan-error.patch | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) rename app-arch/bzip2/{bzip2-1.0.6-r9.ebuild => bzip2-1.0.6-r10.ebuild} (98%) create mode 100644 app-arch/bzip2/files/bzip2-1.0.6-ubsan-error.patch diff --git a/app-arch/bzip2/bzip2-1.0.6-r9.ebuild b/app-arch/bzip2/bzip2-1.0.6-r10.ebuild similarity index 98% rename from app-arch/bzip2/bzip2-1.0.6-r9.ebuild rename to app-arch/bzip2/bzip2-1.0.6-r10.ebuild index b2bae1f09890..5fb91d277fa8 100644 --- a/app-arch/bzip2/bzip2-1.0.6-r9.ebuild +++ b/app-arch/bzip2/bzip2-1.0.6-r10.ebuild @@ -27,6 +27,7 @@ PATCHES=( "${FILESDIR}"/${PN}-1.0.6-mingw.patch #393573 "${FILESDIR}"/${PN}-1.0.6-out-of-tree-build.patch "${FILESDIR}"/${PN}-1.0.6-CVE-2016-3189.patch #620466 + "${FILESDIR}"/${PN}-1.0.6-ubsan-error.patch ) DOCS=( CHANGES README{,.COMPILATION.PROBLEMS,.XML.STUFF} manual.pdf ) diff --git a/app-arch/bzip2/files/bzip2-1.0.6-ubsan-error.patch b/app-arch/bzip2/files/bzip2-1.0.6-ubsan-error.patch new file mode 100644 index 000000000000..84b811177ed5 --- /dev/null +++ b/app-arch/bzip2/files/bzip2-1.0.6-ubsan-error.patch @@ -0,0 +1,24 @@ +Author: Manoj Gupta + +Use unsigned 1 for shifting instead of signed 1. + +This fixed an issue with shift caught by undefined behavior +sanitizer in clang. +bzip2-1.0.6/blocksort.c:255:7 +runtime error: left shift of 1 by 31 places cannot be represented in type 'int' + +--- a/blocksort.c ++++ b/blocksort.c +@@ -202,9 +202,9 @@ void fallbackQSort3 ( UInt32* fmap, + bhtab [ 0 .. 2+(nblock/32) ] destroyed + */ + +-#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31)) +-#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31)) +-#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31))) ++#define SET_BH(zz) bhtab[(zz) >> 5] |= (1u << ((zz) & 31)) ++#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1u << ((zz) & 31)) ++#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1u << ((zz) & 31))) + #define WORD_BH(zz) bhtab[(zz) >> 5] + #define UNALIGNED_BH(zz) ((zz) & 0x01f) + -- 2.26.2