On 12/9/25 16:07, Peter Maydell wrote:
On Tue, 9 Dec 2025 at 15:04, Cédric Le Goater <[email protected]> wrote:

Assigning the result of strstr() to a 'char *' is unsafe since
strstr() returns a pointer into the original string which is a
read-only 'const char *' string. Newer compilers

Which ones? Or does this depend on how the libc headers have
marked up the strstr() prototype?

Right. This is a new issue and I am not sure why.

It's showing on :

 gcc version 15.2.1 20251111 (Red Hat 15.2.1-4) (GCC)
 glibc-devel-2.42.9000-14.fc44.x86_64

and <string.h> doesn't seem to have change. Both strstr() prototypes
are available.

Let me check.

C.



now complain when the
result of strstr() is not a 'const char *' :

../util/log.c:208:24: error: initialization discards ‘const’ qualifier from 
pointer target type [-Werror=discarded-qualifiers]
   208 |         char *pidstr = strstr(filename, "%");
       |                        ^~~~~~

Fix that.

Signed-off-by: Cédric Le Goater <[email protected]>
---
  util/log.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/util/log.c b/util/log.c
index 
41f78ce86b2522b8b7072c8b76d8e18603142db6..c44d66b5ce78338cf1b2cd26b7503cb94d4570cb
 100644
--- a/util/log.c
+++ b/util/log.c
@@ -203,7 +203,7 @@ static ValidFilenameTemplateResult
  valid_filename_template(const char *filename, bool per_thread, Error **errp)
  {
      if (filename) {
-        char *pidstr = strstr(filename, "%");
+        const char *pidstr = strstr(filename, "%");

          if (pidstr) {
              /* We only accept one %d, no other format strings */
--

Reviewed-by: Peter Maydell <[email protected]>

thanks
-- PMM



Reply via email to