diff --git a/glibc-CVE-2020-27618.patch b/glibc-CVE-2020-27618.patch new file mode 100644 index 0000000..446244a --- /dev/null +++ b/glibc-CVE-2020-27618.patch @@ -0,0 +1,55 @@ +From 9a99c682144bdbd40792ebf822fe9264e0376fb5 Mon Sep 17 00:00:00 2001 +From: Arjun Shankar +Date: Wed, 4 Nov 2020 12:19:38 +0100 +Subject: [PATCH] iconv: Accept redundant shift sequences in IBM1364 [BZ + #26224] + +The IBM1364, IBM1371, IBM1388, IBM1390 and IBM1399 character sets +share converter logic (iconvdata/ibm1364.c) which would reject +redundant shift sequences when processing input in these character +sets. This led to a hang in the iconv program (CVE-2020-27618). + +This commit adjusts the converter to ignore redundant shift sequences +and adds test cases for iconv_prog hangs that would be triggered upon +their rejection. This brings the implementation in line with other +converters that also ignore redundant shift sequences (e.g. IBM930 +etc., fixed in commit 692de4b3960d). + +Reviewed-by: Carlos O'Donell +--- + iconvdata/ibm1364.c | 14 ++------------ + +diff --git a/iconvdata/ibm1364.c b/iconvdata/ibm1364.c +index 49e7267ab4..521f0825b7 100644 +--- a/iconvdata/ibm1364.c ++++ b/iconvdata/ibm1364.c +@@ -158,24 +158,14 @@ enum + \ + if (__builtin_expect (ch, 0) == SO) \ + { \ +- /* Shift OUT, change to DBCS converter. */ \ +- if (curcs == db) \ +- { \ +- result = __GCONV_ILLEGAL_INPUT; \ +- break; \ +- } \ ++ /* Shift OUT, change to DBCS converter (redundant escape okay). */ \ + curcs = db; \ + ++inptr; \ + continue; \ + } \ + if (__builtin_expect (ch, 0) == SI) \ + { \ +- /* Shift IN, change to SBCS converter. */ \ +- if (curcs == sb) \ +- { \ +- result = __GCONV_ILLEGAL_INPUT; \ +- break; \ +- } \ ++ /* Shift IN, change to SBCS converter (redundant escape okay). */ \ + curcs = sb; \ + ++inptr; \ + continue; \ +-- +2.27.0 + diff --git a/glibc.spec b/glibc.spec index f990216..4f7d0e8 100644 --- a/glibc.spec +++ b/glibc.spec @@ -28,6 +28,8 @@ Patch14: 0002-arm-CVE-2020-6096-fix-memcpy-and-memmove-for-negativ.patch Patch15: 0003-arm-CVE-2020-6096-Fix-multiarch-memcpy-for-negative-.patch Patch16: 0001-Fix-array-bounds-violation-in-regex-matcher-bug-2514.patch Patch17: 0001-posix-Sync-regex-with-gnulib.patch +Patch18: glibc-CVE-2020-27618.patch + Provides: ldconfig # The dynamic linker supports DT_GNU_HASH @@ -231,6 +233,7 @@ cd %{glibcsrcdir} %patch15 -p1 %patch16 -p1 %patch17 -p1 +%patch18 -p1 %build GCC=gcc