Accepting request 679445 from Archiving

Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/679445
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/brotli?expand=0&rev=7
This commit is contained in:
Stephan Kulow 2019-03-01 19:29:10 +00:00 committed by Git OBS Bridge
commit efddacf91d
4 changed files with 1473 additions and 7 deletions

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
Sun Jan 13 11:24:26 UTC 2019 - bjorn.lie@gmail.com
- 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.
-------------------------------------------------------------------
Fri Dec 14 11:01:35 UTC 2018 - Jan Engelhardt <jengelh@inai.de>

View File

@ -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 <buschmann23@opensuse.org>
#
# All modifications and additions to the file contributed by third parties
@ -25,8 +25,10 @@ Summary: Lossless Compression Algorithm
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 @@ Summary: Library for Brotli Compression
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: libbrotlidec-devel < %version-%release
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

View File

@ -0,0 +1,74 @@
From 5805f99a533a8f8118699c0100d8c102f3605f65 Mon Sep 17 00:00:00 2001
From: Justin Ridgewell <justin@ridgewell.name>
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)

File diff suppressed because it is too large Load Diff