This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Prevent out of bound access for multilib_options
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Kito Cheng <kito at 0xlab dot org>
- Cc: gcc-patches at gcc dot gnu dot org, rguenther at suse dot de, rsandifo at linux dot vnet dot ibm dot com
- Date: Mon, 14 Apr 2014 14:12:50 +0200
- Subject: Re: [PATCH] Prevent out of bound access for multilib_options
- Authentication-results: sourceware.org; auth=none
- References: <CA+yXCZD=HHZrhbG068nLB2xmmSFsAaBMsFxZHcQ=+a8af-BVKw at mail dot gmail dot com>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Wed, Apr 09, 2014 at 10:00:38PM +0800, Kito Cheng wrote:
> `q` will out of bound access if `*q` already reach the end of
> multilib_options, so check it before increment to prevent condition
> check part out of bound access.
>
> btw, this bug is detected by address sanitizer.
>
>
> 2014-04-09 Kito Cheng <kito@0xlab.org>
> * gcc.c (used_arg): Prevent out of bound access for multilib_options.
There should be a newline between date/name/email line and
* gcc.c ... and the * gcc.c line should be indented by tab.
> diff --git a/gcc/gcc.c b/gcc/gcc.c
> index 5cb485a..c8ab7d6 100644
> --- a/gcc/gcc.c
> +++ b/gcc/gcc.c
> @@ -7490,7 +7490,7 @@ used_arg (const char *p, int len)
> {
> const char *r;
>
> - for (q = multilib_options; *q != '\0'; q++)
> + for (q = multilib_options; *q != '\0'; *q && q++)
> {
> while (*q == ' ')
> q++;
Ok for trunk and 4.9.1.
Jakub