[Bug middle-end/84831] Invalid memory read in parse_output_constraint
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Mar 12 12:46:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84831
--- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Jakub Jelinek from comment #4)
> diff -upbd of that for better readability.
>
> --- gcc/stmt.c.jj 2018-01-03 10:19:55.150533956 +0100
> +++ gcc/stmt.c 2018-03-12 13:25:03.790733765 +0100
> @@ -247,7 +247,8 @@ parse_output_constraint (const char **co
> }
>
> /* Loop through the constraint string. */
> - for (p = constraint + 1; *p; p += CONSTRAINT_LEN (*p, p))
> + for (p = constraint + 1; *p; )
> + {
> switch (*p)
> {
> case '+':
> @@ -304,6 +305,11 @@ parse_output_constraint (const char **co
> break;
> }
>
> + for (size_t len = CONSTRAINT_LEN (*p, p); len; len--, p++)
> + if (*p == '\0')
> + break;
> + }
> +
> return true;
> }
>
>
Both patches should work. I have no preference. Thanks.
More information about the Gcc-bugs
mailing list