Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F137067669
D7850.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D7850.id.diff
View Options
Index: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c
===================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c
@@ -187,21 +187,18 @@
defined(__amd64) || defined(__ppc64__) || defined(_WIN64) || \
defined(__LP64__) || defined(_LP64))
#define LZ4_ARCH64 1
-/*
- * Illumos: On amd64 we have 20k of stack and 24k on sun4u and sun4v, so we
- * can spend 16k on the algorithm
- */
-/* FreeBSD: Use heap for all platforms for now */
-#define STACKLIMIT 0
#else
#define LZ4_ARCH64 0
+#endif
+
/*
- * Illumos: On i386 we only have 12k of stack, so in order to maintain the
- * same COMPRESSIONLEVEL we have to use heap allocation. Performance will
- * suck, but alas, it's ZFS on 32-bit we're talking about, so...
+ * Limits the amount of stack space that the algorithm may consume to hold
+ * the compression lookup table. The value `9' here means we'll never use
+ * more than 2k of stack (see above for a description of COMPRESSIONLEVEL).
+ * If more memory is needed, it is allocated from the heap.
*/
+/* FreeBSD: Use heap for all platforms for now */
#define STACKLIMIT 0
-#endif
/*
* Little Endian or Big Endian?
@@ -870,7 +867,7 @@
/* Decompression functions */
/*
- * Note: The decoding functionLZ4_uncompress_unknownOutputSize() is safe
+ * Note: The decoding function LZ4_uncompress_unknownOutputSize() is safe
* against "buffer overflow" attack type. They will never write nor
* read outside of the provided output buffers.
* LZ4_uncompress_unknownOutputSize() also insures that it will never
@@ -913,6 +910,9 @@
}
/* copy literals */
cpy = op + length;
+ /* CORNER-CASE: cpy might overflow. */
+ if (cpy < op)
+ goto _output_error; /* cpy was overflowed, bail! */
if ((cpy > oend - COPYLENGTH) ||
(ip + length > iend - COPYLENGTH)) {
if (cpy > oend)
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Nov 22, 2:09 AM (13 h, 3 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25869516
Default Alt Text
D7850.id.diff (1 KB)
Attached To
Mode
D7850: MFV r268120: 4936 lz4 could theoretically overflow a pointer with a certain input
Attached
Detach File
Event Timeline
Log In to Comment