This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] gcc/gcc.c: XNEWVEC enough space for 'saved_suffix' using

On 07/24/14 09:31, Chen Gang wrote:
strlen() will get string length excluding '\0', but strcpy() will append
'\0' in the end, so need XNEWVEC additional byte, or cause memory over

Signed-off-by: Chen Gang <>
  gcc/gcc.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/gcc.c b/gcc/gcc.c
index 6cd08ea..8ea46ec 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -4895,7 +4895,7 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
  			  = XNEWVEC (char, suffix_length
-				     + strlen (TARGET_OBJECT_SUFFIX));
+				     + strlen (TARGET_OBJECT_SUFFIX) + 1);
  			strncpy (saved_suffix, suffix, suffix_length);
  			strcpy (saved_suffix + suffix_length,
Thanks. I've installed this on the trunk after bootstrapping and regression testing on x86_64-unknown-linux-gnu

In the future, please do a bootstrap & regression test when submitting patches and indicate which platform you did the testing on.

In essence the process looks like

make check
<save various .sum files>
<apply patch>
make clean
make check
<compare .sum files>

It seems tedious for simple patches, but the requirements for bootstrapping and regression testing keep the tip of the trunk from getting broken too often (which is very costly for everyone when it occurs).

You also need to provide a ChangeLog entry. The details of what belongs in a ChangeLog are on the web site. Here's an example for your patch:

2014-07-31  Chen Gang  <>

        * gcc.c (do_spec_1): Allocate enough space for saved_suffix.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]