blob: 721f2a0a6347e163fee51a5bfab777f28e04ebe8 [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001The patch to fix CVE-2012-5667
2Reference: https://bugzilla.redhat.com/attachment.cgi?id=686605&action=diff
3
4Multiple integer overflows in GNU Grep before 2.11 might allow
5context-dependent attackers to execute arbitrary code via vectors
6involving a long input line that triggers a heap-based buffer overflow.
7
8http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-5667
9
10Upstream-Status: Inappropriate [other]
11This version of GNU Grep has been abandoned upstream and they are no longer
12accepting patches. This is not a backport.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050013CVE: CVE-2012-5667
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014
15Signed-off-by Ming Liu <ming.liu@windriver.com>
16---
17 grep.c | 7 +++----
18 1 file changed, 3 insertions(+), 4 deletions(-)
19
20--- a/src/grep.c 2013-05-15 13:39:33.359191769 +0800
21+++ a/src/grep.c 2013-05-15 13:50:22.609191882 +0800
22@@ -306,6 +306,11 @@ fillbuf (size_t save, struct stats const
23 int cc = 1;
24 char *readbuf;
25 size_t readsize;
26+ const size_t max_save = INT_MAX / 2;
27+
28+ /* Limit the amount of saved data to INT_MAX to fix CVE-2012-5667 */
29+ if (save > max_save)
30+ error (2, 0, _("line too long"));
31
32 /* Offset from start of buffer to start of old stuff
33 that we want to save. */