Fix GCC warning in msc_headers_to_buffer():

In file included from /usr/include/stdio.h:970,
                 from modsecurity.h:18,
                 from msc_util.c:15:
In function 'sprintf',
    inlined from 'msc_headers_to_buffer' at msc_util.c:2331:17:
/usr/include/bits/stdio2.h:30:10: warning: '__sprintf_chk' argument 5 overlaps destination object 'buffer' [-Wrestrict]
   30 |   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   31 |                                   __glibc_objsize (__s), __fmt,
      |                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   32 |                                   __va_arg_pack ());
      |                                   ~~~~~~~~~~~~~~~~~
msc_util.c: In function 'msc_headers_to_buffer':
msc_util.c:2306:64: note: destination object referenced by 'restrict'-qualified argument 1 was declared here
 2306 | int msc_headers_to_buffer(const apr_array_header_t *arr, char *buffer,
      |                                                          ~~~~~~^~~~~~
This commit is contained in:
Joe Orton 2025-05-16 09:58:55 +01:00
parent 9d9a727349
commit de1cf63d26

View File

@ -2310,9 +2310,11 @@ int msc_headers_to_buffer(const apr_array_header_t *arr, char *buffer,
int write_to_buffer = 0; int write_to_buffer = 0;
int i = 0; int i = 0;
const apr_table_entry_t *te = NULL; const apr_table_entry_t *te = NULL;
char *ptr = NULL;
if (buffer != NULL && buffer_length > 0) { if (buffer != NULL && buffer_length > 0) {
write_to_buffer = 1; write_to_buffer = 1;
ptr = buffer;
} }
te = (apr_table_entry_t *)arr->elts; te = (apr_table_entry_t *)arr->elts;
@ -2328,7 +2330,9 @@ int msc_headers_to_buffer(const apr_array_header_t *arr, char *buffer,
goto not_enough_memory; goto not_enough_memory;
} }
sprintf(buffer, "%s%s: %s\n", buffer, key, value); assert(ptr && ptr < buffer + buffer_length);
sprintf(ptr, "%s: %s\n", key, value);
ptr = buffer + headers_length; /* for the next entry. */
} }
} }