Hello community, here is the log from the commit of package brotli for openSUSE:Factory checked in at 2019-03-01 20:29:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/brotli (Old) and /work/SRC/openSUSE:Factory/.brotli.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "brotli" Fri Mar 1 20:29:10 2019 rev:7 rq:679445 version:1.0.7 Changes: -------- --- /work/SRC/openSUSE:Factory/brotli/brotli.changes 2018-12-27 00:24:19.879911213 +0100 +++ /work/SRC/openSUSE:Factory/.brotli.new.28833/brotli.changes 2019-03-01 20:29:11.234014726 +0100 @@ -1,0 +2,12 @@ +Sun Jan 13 11:24:26 UTC 2019 - [email protected] + +- Add brotli_Verbose-CLI+Shared-Brotli.patch: Verbose CLI + start + pulling "Shared-Brotli". + * verbose CLI output; fix gh#google/brotlie#666. + * pull `SHIFT` transforms; currently this is semantically dead + code; later it will be used by "Shared-Brotli". +- Add brotli_Ensure-decompression-consumes-all-input.patch: Ensure + decompression consumes all input. If not, it's a corrupt stream. +- Tweak spec slightly. + +------------------------------------------------------------------- New: ---- brotli_Ensure-decompression-consumes-all-input.patch brotli_Verbose-CLI+Shared-Brotli.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ brotli.spec ++++++ --- /var/tmp/diff_new_pack.cw6IAG/_old 2019-03-01 20:29:12.286014473 +0100 +++ /var/tmp/diff_new_pack.cw6IAG/_new 2019-03-01 20:29:12.290014472 +0100 @@ -1,7 +1,7 @@ # # spec file for package brotli # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2017 Buschmann <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -25,8 +25,10 @@ License: MIT Group: Productivity/Archiving/Compression URL: https://github.com/google/brotli -Source: https://github.com/google/brotli/archive/v%version.tar.gz#/%name-%version.tar.gz +Source: %url/archive/v%version.tar.gz#/%name-%version.tar.gz Source99: baselibs.conf +Patch: brotli_Verbose-CLI+Shared-Brotli.patch +Patch1: brotli_Ensure-decompression-consumes-all-input.patch BuildRequires: cmake >= 2.8.6 BuildRequires: gcc-c++ BuildRequires: gzip @@ -70,9 +72,11 @@ Group: System/Libraries %description -n libbrotlienc%sover -Compression library for the Brotli general purpose lossless data compression algorithm. +Compression library for the Brotli general purpose lossless data +compression algorithm. -The specification of the Brotli Compressed Data Format is defined in RFC 7932. +The specification of the Brotli Compressed Data Format is defined in +RFC 7932. %package -n libbrotli-devel Summary: Development and Header Files for Brotli Compression @@ -88,10 +92,11 @@ Obsoletes: libbrotlienc-devel < %version-%release %description -n libbrotli-devel -Development and headers files for (de)compressing data using the Brotli general -purpose lossless compression algorithm. +Development and headers files for (de)compressing data using the +Brotli general purpose lossless compression algorithm. -The specification of the Brotli Compressed Data Format is defined in RFC 7932. +The specification of the Brotli Compressed Data Format is defined in +RFC 7932. %prep %autosetup -p1 ++++++ brotli_Ensure-decompression-consumes-all-input.patch ++++++ >From 5805f99a533a8f8118699c0100d8c102f3605f65 Mon Sep 17 00:00:00 2001 From: Justin Ridgewell <[email protected]> Date: Mon, 12 Nov 2018 04:36:00 -0500 Subject: [PATCH] Ensure decompression consumes all input (#730) * Ensure decompression consumes all input If not, it's a corrupt stream. * Use byte strings --- python/_brotli.cc | 4 ++-- python/tests/decompress_test.py | 4 ++++ python/tests/decompressor_test.py | 9 +++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/python/_brotli.cc b/python/_brotli.cc index a6f925ef..5e1828e9 100644 --- a/python/_brotli.cc +++ b/python/_brotli.cc @@ -414,7 +414,7 @@ static BROTLI_BOOL decompress_stream(BrotliDecoderState* dec, (*output).insert((*output).end(), buffer, buffer + buffer_length); } } - ok = result != BROTLI_DECODER_RESULT_ERROR; + ok = result != BROTLI_DECODER_RESULT_ERROR && !available_in; Py_END_ALLOW_THREADS return ok; @@ -672,7 +672,7 @@ static PyObject* brotli_decompress(PyObject *self, PyObject *args, PyObject *key if (available_out != 0) output.insert(output.end(), next_out, next_out + available_out); } - ok = result == BROTLI_DECODER_RESULT_SUCCESS; + ok = result == BROTLI_DECODER_RESULT_SUCCESS && !available_in; BrotliDecoderDestroyInstance(state); Py_END_ALLOW_THREADS diff --git a/python/tests/decompress_test.py b/python/tests/decompress_test.py index 7a9e9e30..814e5633 100644 --- a/python/tests/decompress_test.py +++ b/python/tests/decompress_test.py @@ -31,6 +31,10 @@ def _test_decompress(self, test_data): self._decompress(test_data) self._check_decompression(test_data) + def test_garbage_appended(self): + with self.assertRaises(brotli.error): + brotli.decompress(brotli.compress(b'a') + b'a') + _test_utils.generate_test_methods(TestDecompress, for_decompression=True) diff --git a/python/tests/decompressor_test.py b/python/tests/decompressor_test.py index 99667bcd..05918ada 100644 --- a/python/tests/decompressor_test.py +++ b/python/tests/decompressor_test.py @@ -43,6 +43,15 @@ def _test_decompress(self, test_data): self._decompress(test_data) self._check_decompression(test_data) + def test_garbage_appended(self): + with self.assertRaises(brotli.error): + self.decompressor.process(brotli.compress(b'a') + b'a') + + def test_already_finished(self): + self.decompressor.process(brotli.compress(b'a')) + with self.assertRaises(brotli.error): + self.decompressor.process(b'a') + _test_utils.generate_test_methods(TestDecompressor, for_decompression=True) ++++++ brotli_Verbose-CLI+Shared-Brotli.patch ++++++ ++++ 1375 lines (skipped)
