git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: CPPCheck found 24 high risk bugs in Git v.1.8.3.4

From
Erik Faye-Lund <kusmabite@gmail.com>
Date
Aug 20, 2013, 22:26 UTC
Message-ID
<CABPQNSZSXgvLw_i25em38B70EgtZrv9iQh8OaCJzYRCk2vjZXQ@mail.gmail.com>
In-Reply-To
<87eh9op5gq.fsf@igel.home>
On Tue, Aug 20, 2013 at 8:44 PM, Andreas Schwab <schwab@linux-m68k.org> wrote:
Show 23 quoted lines
> Erik Faye-Lund <kusmabite@gmail.com> writes:
>
>> diff --git a/compat/win32/syslog.c b/compat/win32/syslog.c
>> index d015e43..0641f4e 100644
>> --- a/compat/win32/syslog.c
>> +++ b/compat/win32/syslog.c
>> @@ -43,11 +43,14 @@ void syslog(int priority, const char *fmt, ...)
>>   va_end(ap);
>>
>>   while ((pos = strstr(str, "%1")) != NULL) {
>> - str = realloc(str, ++str_len + 1);
>> - if (!str) {
>> + char *tmp = realloc(str, ++str_len + 1);
>> + if (!tmp) {
>>   warning("realloc failed: '%s'", strerror(errno));
>> + free(str);
>>   return;
>>   }
>> + pos = tmp + (pos - str);
>
> Pedantically, this is undefined (uses of both pos and str may trap after
> realloc has freed the original pointer), it is better to calculate the
> difference before calling realloc.

I don't see how it's undefined. It's using the memory that 'pos' *points to* that is undefined, no? The difference between 'pos' and 'str' should still be the same, it's not like realloc somehow magically updates 'pos'...

Previous: Erik Faye-LundNext: Andreas Schwab
Message 12 of 18 in “CPPCheck found 24 high risk bugs in Git v.1.8.3.4”
  1. Koch, Rick (Subcontractor)Aug 19, 2013
  2. Philip OakleyAug 19, 2013
  3. Jeff KingAug 19, 2013
  4. Junio C HamanoAug 19, 2013
  5. Johan HerlandAug 19, 2013
  6. Philip OakleyAug 19, 2013
  7. Erik Faye-LundAug 19, 2013
  8. Jeff KingAug 20, 2013
  9. Andreas SchwabAug 20, 2013
  10. René ScharfeAug 20, 2013
  11. Erik Faye-LundAug 20, 2013
  12. Erik Faye-LundAug 20, 2013
  13. Andreas SchwabAug 20, 2013
  14. Junio C HamanoAug 20, 2013
  15. Erik Faye-LundAug 21, 2013
  16. Stefan BellerAug 19, 2013
  17. Philip OakleyAug 19, 2013
  18. Philip OakleyAug 23, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.