| 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. */ |