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