From 068424b26532f3551a81421a9be67ed206e5c11a Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Wed, 11 Aug 2021 07:02:28 +0100 Subject: gentoo resync : 11.08.2021 --- .../files/python-lzo-1.12-fix-py3.10.patch | 159 +++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 dev-python/python-lzo/files/python-lzo-1.12-fix-py3.10.patch (limited to 'dev-python/python-lzo/files/python-lzo-1.12-fix-py3.10.patch') diff --git a/dev-python/python-lzo/files/python-lzo-1.12-fix-py3.10.patch b/dev-python/python-lzo/files/python-lzo-1.12-fix-py3.10.patch new file mode 100644 index 000000000000..17bad96d6278 --- /dev/null +++ b/dev-python/python-lzo/files/python-lzo-1.12-fix-py3.10.patch @@ -0,0 +1,159 @@ +diff --git a/lzomodule.c b/lzomodule.c +index b5fa542..e9ca432 100644 +--- a/lzomodule.c ++++ b/lzomodule.c +@@ -31,6 +31,8 @@ + + #define MODULE_VERSION "1.12" + ++#define PY_SSIZE_T_CLEAN ++ + #include + #include + +@@ -83,7 +85,7 @@ compress(PyObject *dummy, PyObject *args) + lzo_uint in_len; + lzo_uint out_len; + lzo_uint new_len; +- int len; ++ Py_ssize_t len; + int level = 1; + int header = 1; + int err; +@@ -95,6 +97,16 @@ compress(PyObject *dummy, PyObject *args) + if (len < 0) + return NULL; + ++ if (len > LZO_UINT_MAX) { ++ PyErr_SetString(LzoError, "Input size is larger than LZO_UINT_MAX"); ++ return NULL; ++ } ++ ++ if ((len + len / 16 + 64 + 3) > LZO_UINT_MAX) { ++ PyErr_SetString(LzoError, "Output size is larger than LZO_UINT_MAX"); ++ return NULL; ++ } ++ + in_len = len; + out_len = in_len + in_len / 16 + 64 + 3; + +@@ -189,7 +201,7 @@ decompress(PyObject *dummy, PyObject *args) + lzo_uint in_len; + lzo_uint out_len; + lzo_uint new_len; +- int len; ++ Py_ssize_t len; + int buflen = -1; + int header = 1; + int err; +@@ -274,7 +286,7 @@ optimize(PyObject *dummy, PyObject *args) + lzo_uint in_len; + lzo_uint out_len; + lzo_uint new_len; +- int len; ++ Py_ssize_t len; + int err; + int header = 1; + int buflen = -1; +@@ -356,7 +368,7 @@ static PyObject * + adler32(PyObject *dummy, PyObject *args) + { + char *buf; +- int len; ++ Py_ssize_t len; + unsigned long val = 1; /* == lzo_adler32(0, NULL, 0); */ + + UNUSED(dummy); +@@ -392,7 +404,7 @@ static PyObject * + crc32(PyObject *dummy, PyObject *args) + { + char *buf; +- int len; ++ Py_ssize_t len; + unsigned long val = 0; /* == lzo_crc32(0, NULL, 0); */ + + UNUSED(dummy); +diff --git a/tests/test.py b/tests/test.py +index 9a96ce7..af761d9 100644 +--- a/tests/test.py ++++ b/tests/test.py +@@ -96,11 +96,17 @@ def test_version(): + + def test_lzo(): + yield gen, b"aaaaaaaaaaaaaaaaaaaaaaaa" +- yield gen_raw, b"aaaaaaaaaaaaaaaaaaaaaaaa" + yield gen, b"abcabcabcabcabcabcabcabc" +- yield gen_raw, b"abcabcabcabcabcabcabcabc" + yield gen, b"abcabcabcabcabcabcabcabc", 9 ++ ++ ++def test_lzo_raw(): ++ yield gen_raw, b"aaaaaaaaaaaaaaaaaaaaaaaa" ++ yield gen_raw, b"abcabcabcabcabcabcabcabc" + yield gen_raw, b"abcabcabcabcabcabcabcabc", 9 ++ ++ ++def test_lzo_empty(): + yield gen, b"" + yield gen_raw, b"" + +@@ -113,41 +119,8 @@ def test_lzo_raw_big(): + gen_raw(b" " * 131072) + + +-def main(args): +- # display version information and module documentation +- print("LZO version %s (0x%x), %s" % (lzo.LZO_VERSION_STRING, lzo.LZO_VERSION, lzo.LZO_VERSION_DATE)) +- print(lzo.__file__) +- print() +- print(lzo.__doc__) +- +- # display additional module information +- ## print dir(lzo) +- ## print_modinfo() +- +- # compress some simple strings +- gen(b"aaaaaaaaaaaaaaaaaaaaaaaa") +- gen_raw(b"aaaaaaaaaaaaaaaaaaaaaaaa") +- gen(b"abcabcabcabcabcabcabcabc") +- gen_raw(b"abcabcabcabcabcabcabcabc") +- gen(b"abcabcabcabcabcabcabcabc", level=9) +- gen_raw(b"abcabcabcabcabcabcabcabc", level=9) +- gen(b" " * 131072) +- gen_raw(b" " * 131072) +- gen(b"") +- gen_raw(b"") +- print("Simple compression test passed.") +- +- test_version() +- +- # force an exception (because of invalid compressed data) +- assert issubclass(lzo.error, Exception) +- try: +- x = lzo.decompress("xx") +- except lzo.error: +- pass +- else: +- print("Exception handling does NOT work !") +- return 0 +- +-if __name__ == '__main__': +- sys.exit(main(sys.argv)) ++if sys.maxsize > 1<<32: ++ # This test raises OverflowError on 32-bit Pythons. Compressing ++ # this much data requires a 64-bit system. ++ def test_lzo_compress_extremely_big(): ++ b = lzo.compress(bytes(bytearray((1024**3)*2))) +diff --git a/tests/util.py b/tests/util.py +index 0a2f4ed..c7bd5f0 100644 +--- a/tests/util.py ++++ b/tests/util.py +@@ -45,7 +45,7 @@ def get_sys_path(p=None): + if p: p0 = p[0] + # + plat = get_platform() +- plat_specifier = "%s-%s" % (plat, sys.version[:3]) ++ plat_specifier = "%s-%d.%d" % (plat, sys.version_info[0], sys.version_info[1]) + ##print plat, plat_specifier + # + for prefix in (p0, os.curdir, os.pardir,): -- cgit v1.2.3