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

Re: [PATCH 1/5] Make xstrndup common

From
Junio C Hamano <junkio@cox.net>
Date
Apr 29, 2007, 20:39 UTC
Message-ID
<7vy7kadifj.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<4635003F.7080408@freedesktop.org>
Josh Triplett <josh@freedesktop.org> writes:
Show 10 quoted lines
> Daniel Barkalow wrote:
> ...
>> Good catch. Replacing the memcpy with strncpy solves this, right? 
>> (Potentially allocating a bit of extra memory if someone is actually using 
>> it on too short a string for some reason, of course).
>
> That would work, but it seems bad to allocate excess memory.  How about just
> using strlen and setting len to that if shorter, before doing the xmalloc and
> memcpy?  Yes, that makes two passes over the string, but I don't see any way
> around that.

Hand-rolling strnlen() would be needed anyway, because there is no guarantee that the incoming string is NUL terminated. In the worst case the string may point at a region of memory filled with non-NUL to the end, which coincides with a page boundary, and the next page may be an unmapped one; your strlen() would sigbus.

Previous: Josh TriplettNext: Adam Roben
Message 5 of 9 in “Re: [PATCH 1/5] Make xstrndup common”
  1. Josh TriplettApr 28, 2007
  2. Junio C HamanoApr 28, 2007
  3. Daniel BarkalowApr 29, 2007
  4. Josh TriplettApr 29, 2007
  5. Junio C HamanoApr 29, 2007
  6. Adam RobenApr 29, 2007
  7. Johannes SchindelinApr 30, 2007
  8. Jeff KingApr 30, 2007
  9. Johannes SchindelinApr 30, 2007

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.