summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '2910_lz4-compression-fix.patch')
-rw-r--r--2910_lz4-compression-fix.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/2910_lz4-compression-fix.patch b/2910_lz4-compression-fix.patch
new file mode 100644
index 00000000..1c55f322
--- /dev/null
+++ b/2910_lz4-compression-fix.patch
@@ -0,0 +1,30 @@
+--- a/lib/lz4/lz4_decompress.c 2015-04-13 16:20:04.896315560 +0800
++++ b/lib/lz4/lz4_decompress.c 2015-04-13 16:27:08.929317053 +0800
+@@ -139,8 +139,12 @@
+ /* Error: request to write beyond destination buffer */
+ if (cpy > oend)
+ goto _output_error;
++#if LZ4_ARCH64
++ if ((ref + COPYLENGTH) > oend)
++#else
+ if ((ref + COPYLENGTH) > oend ||
+ (op + COPYLENGTH) > oend)
++#endif
+ goto _output_error;
+ LZ4_SECURECOPY(ref, op, (oend - COPYLENGTH));
+ while (op < cpy)
+@@ -270,7 +274,13 @@
+ if (cpy > oend - COPYLENGTH) {
+ if (cpy > oend)
+ goto _output_error; /* write outside of buf */
+-
++#if LZ4_ARCH64
++ if ((ref + COPYLENGTH) > oend)
++#else
++ if ((ref + COPYLENGTH) > oend ||
++ (op + COPYLENGTH) > oend)
++#endif
++ goto _output_error;
+ LZ4_SECURECOPY(ref, op, (oend - COPYLENGTH));
+ while (op < cpy)
+ *op++ = *ref++;