summaryrefslogtreecommitdiff
path: root/meta/recipes-extended/grep/grep-2.5.1a/grep-CVE-2012-5667.patch
blob: 059d0687b3fe8433804ac8fb514deac3154d628a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
The patch to fix CVE-2012-5667
Reference: https://bugzilla.redhat.com/attachment.cgi?id=686605&action=diff

Multiple integer overflows in GNU Grep before 2.11 might allow
context-dependent attackers to execute arbitrary code via vectors
involving a long input line that triggers a heap-based buffer overflow.

http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-5667

Upstream-Status: Inappropriate [other]
This version of GNU Grep has been abandoned upstream and they are no longer
accepting patches.  This is not a backport.

Signed-off-by Ming Liu <ming.liu@windriver.com>
---
 grep.c |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

--- a/src/grep.c	2013-05-15 13:39:33.359191769 +0800
+++ a/src/grep.c	2013-05-15 13:50:22.609191882 +0800
@@ -306,6 +306,11 @@ fillbuf (size_t save, struct stats const
   int cc = 1;
   char *readbuf;
   size_t readsize;
+  const size_t max_save = INT_MAX / 2;
+
+  /* Limit the amount of saved data to INT_MAX to fix CVE-2012-5667 */
+  if (save > max_save)
+     error (2, 0, _("line too long"));
 
   /* Offset from start of buffer to start of old stuff
      that we want to save.  */