]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
compiler: increase buffer size to avoid warning
authorIan Lance Taylor <iant@golang.org>
Thu, 28 Nov 2024 21:14:34 +0000 (13:14 -0800)
committerIan Lance Taylor <iant@golang.org>
Fri, 29 Nov 2024 21:02:01 +0000 (13:02 -0800)
GCC has a new -Wformat-truncation warning that triggers on this code:

../../gcc/go/gofrontend/go-encode-id.cc: In function 'std::string go_encode_id(const std::string&)':
../../gcc/go/gofrontend/go-encode-id.cc:176:48: error: '%02x' directive output may be truncated writing between 2 and 8 bytes into a region of size 6 [-Werror=format-truncation=]
  176 |                   snprintf(buf, sizeof buf, "_x%02x", c);
      |                                                ^~~~
../../gcc/go/gofrontend/go-encode-id.cc:176:45: note: directive argument in the range [128, 4294967295]
  176 |                   snprintf(buf, sizeof buf, "_x%02x", c);
      |                                             ^~~~~~~~
../../gcc/go/gofrontend/go-encode-id.cc:176:27: note: 'snprintf' output between 5 and 11 bytes into a destination of size 8
  176 |                   snprintf(buf, sizeof buf, "_x%02x", c);
      |                   ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The code is safe, because the value of c is known to be >= 0 && <= 0xff.
But it's difficult for the compiler to know that.
Bump the buffer size to avoid the warning.

Fixes PR go/117833

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/632455

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/go-encode-id.cc

index 59badf80f40b2c5147f22feecfab2a55a22e6b07..3bd755ce515ed5df9bff761e972654d6ca1b076e 100644 (file)
@@ -1,4 +1,4 @@
-f9ea9801058aa98a421784da12b76cda0b4c6cf2
+dfe585bf82380630697e96c249de825c5f655afe
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index 7ab65f513b394642c7448f6e21ff91719b1474fc..5c82aa74533d19501a6605884913f1e4dd35da52 100644 (file)
@@ -172,7 +172,7 @@ go_encode_id(const std::string &id)
                }
              else
                {
-                 char buf[8];
+                 char buf[16];
                  snprintf(buf, sizeof buf, "_x%02x", c);
                  ret.append(buf);
                }