diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-03-19 13:38:32 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-03-19 13:39:39 +0000 |
commit | d433bb874abb2106c5fd4c160e088598dc9bcf62 (patch) | |
tree | 7be67685886a1b0933b7765718c508ebc5a5bd9d /external | |
parent | cffc082ec77b1511faaaab3397e9acb045b77c5d (diff) |
sync with final upstream commit
Change-Id: I7ebe6096a63f1da29523295b8065c998809e125a
Diffstat (limited to 'external')
-rw-r--r-- | external/jpeg-turbo/jpeg-turbo.limits.patch.1 | 83 |
1 files changed, 60 insertions, 23 deletions
diff --git a/external/jpeg-turbo/jpeg-turbo.limits.patch.1 b/external/jpeg-turbo/jpeg-turbo.limits.patch.1 index f78fd4b3253a..77979956309b 100644 --- a/external/jpeg-turbo/jpeg-turbo.limits.patch.1 +++ b/external/jpeg-turbo/jpeg-turbo.limits.patch.1 @@ -1,20 +1,63 @@ -From 066fee2e7d6834f24838bc1896aa38ca77209e3c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com> -Date: Thu, 16 Mar 2017 15:53:53 +0000 -Subject: [PATCH] honor max_memory_to_use if its set +From da2a27ef056a0179cbd80f9146e58b89403d9933 Mon Sep 17 00:00:00 2001 +From: DRC <information@libjpeg-turbo.org> +Date: Sat, 18 Mar 2017 16:15:14 -0500 +Subject: [PATCH] Honor max_memory_to_use/JPEGMEM/-maxmemory -I'd like to use JPEGMEM to limit memory that libjpeg will allocation -to reject sizes that would the default 2G limit under asan while -fuzzing LibreOffice's jpeg integration +This re-introduces a feature of the obsolete system-specific libjpeg +memory managers-- namely the ability to limit the amount of main memory +used by the library during decompression or multi-pass compression. +This is mainly beneficial for two reasons: + +- Works around a 2 GB limit in libFuzzer +- Allows security-sensitive applications to set a memory limit for the + JPEG decoder so as to work around the progressive JPEG exploit + (LJT-01-004) described here: + http://www.libjpeg-turbo.org/pmwiki/uploads/About/TwoIssueswiththeJPEGStandard.pdf + +This commit also removes obsolete documentation regarding the MS-DOS +memory manager (which itself was removed long ago) and changes the +documentation of the -maxmemory switch and JPEGMEM environment variable +to reflect the fact that backing stores are never used in libjpeg-turbo. + +Inspired by: +https://github.com/caolanm/libjpeg-turbo/commit/066fee2e7d6834f24838bc1896aa38ca77209e3c + +Closes #143 --- - jmemnobs.c | 14 ++++++++++++-- - 1 file changed, 12 insertions(+), 2 deletions(-) + ChangeLog.md | 15 +++++++++++++++ + cjpeg.1 | 4 ++-- + djpeg.1 | 4 ++-- + jmemnobs.c | 16 +++++++++++----- + jpegtran.1 | 4 ++-- + libjpeg.txt | 14 ++++++-------- + structure.txt | 24 +++++++++++------------- + usage.txt | 35 +++++------------------------------ + 8 files changed, 54 insertions(+), 62 deletions(-) diff --git a/jmemnobs.c b/jmemnobs.c -index 5797198..c7dc560 100644 +index 5797198..ac12afa 100644 --- a/jmemnobs.c +++ b/jmemnobs.c -@@ -66,14 +66,24 @@ jpeg_free_large (j_common_ptr cinfo, void *object, size_t sizeofobject) +@@ -3,8 +3,8 @@ + * + * This file was part of the Independent JPEG Group's software: + * Copyright (C) 1992-1996, Thomas G. Lane. +- * It was modified by The libjpeg-turbo Project to include only code and +- * information relevant to libjpeg-turbo. ++ * libjpeg-turbo Modifications: ++ * Copyright (C) 2017, D. R. Commander. + * For conditions of distribution and use, see the accompanying README.ijg + * file. + * +@@ -15,7 +15,6 @@ + * This is very portable in the sense that it'll compile on almost anything, + * but you'd better have lots of main memory (or virtual memory) if you want + * to process big images. +- * Note that the max_memory_to_use option is ignored by this implementation. + */ + + #define JPEG_INTERNALS +@@ -66,14 +65,21 @@ jpeg_free_large (j_common_ptr cinfo, void *object, size_t sizeofobject) /* * This routine computes the total memory space available for allocation. @@ -26,21 +69,15 @@ index 5797198..c7dc560 100644 size_t max_bytes_needed, size_t already_allocated) { - return max_bytes_needed; -+ if (!cinfo->mem->max_memory_to_use) -+ { ++ if (cinfo->mem->max_memory_to_use) { ++ if (cinfo->mem->max_memory_to_use > already_allocated) ++ return cinfo->mem->max_memory_to_use - already_allocated; ++ else ++ return 0; ++ } else { + /* Here we always say, "we got all you want bud!" */ + return max_bytes_needed; + } -+ -+ if (cinfo->mem->max_memory_to_use - already_allocated >= max_bytes_needed) -+ { -+ return max_bytes_needed; -+ } -+ -+ return cinfo->mem->max_memory_to_use - already_allocated; } --- -2.9.3 - |