Subject: Heap-based buffer overflow in 7zip/Compress/ShrinkDecoder.cpp Origin: vendor, https://sourceforge.net/p/p7zip/bugs/_discuss/thread/0920f369/27d7/attachment/CVE-2017-17969.patch Forwarded: https://sourceforge.net/p/p7zip/bugs/_discuss/thread/0920f369/#27d7 Bug: https://sourceforge.net/p/p7zip/bugs/204/ Bug-Debian: https://bugs.debian.org/888297 Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2017-17969 Author: Antoine Beaupré Reviewed-by: Salvatore Bonaccorso Last-Update: 2018-02-01 Applied-Upstream: 18.00-beta --- CPP/7zip/Compress/ShrinkDecoder.cpp +++ CPP/7zip/Compress/ShrinkDecoder.cpp @@ -121,8 +121,13 @@ HRESULT CDecoder::CodeReal(ISequentialIn { _stack[i++] = _suffixes[cur]; cur = _parents[cur]; + if (cur >= kNumItems || i >= kNumItems) + break; } - + + if (cur >= kNumItems || i >= kNumItems) + break; + _stack[i++] = (Byte)cur; lastChar2 = (Byte)cur;