[OE-core] [PATCH 17/21] grep: fix for CVE-2012-5667

Richard Purdie richard.purdie at linuxfoundation.org
Wed May 29 21:21:42 UTC 2013


On Wed, 2013-05-29 at 10:09 -0500, Mark Hatle wrote:
> From: Ming Liu <ming.liu at windriver.com>
> 
> 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
> 
> Signed-off-by: Ming Liu <ming.liu at windriver.com>
> ---
>  .../grep/grep-2.5.1a/grep-CVE-2012-5667.patch      | 28 ++++++++++++++++++++++
>  meta/recipes-extended/grep/grep_2.5.1a.bb          |  3 ++-
>  2 files changed, 30 insertions(+), 1 deletion(-)
>  create mode 100644 meta/recipes-extended/grep/grep-2.5.1a/grep-CVE-2012-5667.patch
> 
> diff --git a/meta/recipes-extended/grep/grep-2.5.1a/grep-CVE-2012-5667.patch b/meta/recipes-extended/grep/grep-2.5.1a/grep-CVE-2012-5667.patch
> new file mode 100644
> index 0000000..e163736
> --- /dev/null
> +++ b/meta/recipes-extended/grep/grep-2.5.1a/grep-CVE-2012-5667.patch
> @@ -0,0 +1,28 @@
> +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
> +
> +Signed-off-by Ming Liu <ming.liu at windriver.com>
> +---
> + grep.c |    7 +++----
> + 1 file changed, 3 insertions(+), 4 deletions(-)

This needs an Upstream-Status field (I know its clear when you read it
but the scripts can't do that).

Cheers,

Richard

> +--- 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.  */
> diff --git a/meta/recipes-extended/grep/grep_2.5.1a.bb b/meta/recipes-extended/grep/grep_2.5.1a.bb
> index d6386ed..247c837 100644
> --- a/meta/recipes-extended/grep/grep_2.5.1a.bb
> +++ b/meta/recipes-extended/grep/grep_2.5.1a.bb
> @@ -13,7 +13,8 @@ SRC_URI = "${GNU_MIRROR}/grep/grep-${PV}.tar.bz2 \
>             file://gettext.patch \
>             file://fix64-int-to-pointer.patch \
>             file://Makevars \
> -           "
> +           file://grep-CVE-2012-5667.patch \
> +          "
>  
>  SRC_URI[md5sum] = "52202fe462770fa6be1bb667bd6cf30c"
>  SRC_URI[sha256sum] = "38c8a2bb9223d1fb1b10bdd607cf44830afc92fd451ac4cd07619bf92bdd3132"





More information about the Openembedded-core mailing list