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

Re: [PATCH 1/3] prune-packed: fix a possible buffer overflow

From
Duy Nguyen <pclouds@gmail.com>
Date
Dec 19, 2013, 00:37 UTC
Message-ID
<CACsJy8CxOAY7MSGx45W60i0ETj4mrgh4rVbVBKrBrLck4bahEg@mail.gmail.com>
In-Reply-To
<xmqqd2kvmi85.fsf@gitster.dls.corp.google.com>
On Wed, Dec 18, 2013 at 1:43 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 6 quoted lines
> Duy Nguyen <pclouds@gmail.com> writes:
>
>> Why don't we take this opportunity to replace that array with a
>> strbuf? The conversion looks simple with this function.
>
> Indeed.  Something like this, perhaps?
Yes, looking good.
Show 21 quoted lines
>  void prune_packed_objects(int opts)
>  {
>         int i;
> -       static char pathname[PATH_MAX];
>         const char *dir = get_object_directory();
> -       int len = strlen(dir);
> +       struct strbuf pathname = STRBUF_INIT;
> +       int top_len;
>
> +       strbuf_addstr(&pathname, dir);
>         if (opts & PRUNE_PACKED_VERBOSE)
>                 progress = start_progress_delay("Removing duplicate objects",
>                         256, 95, 2);
>
> -       if (len > PATH_MAX - 42)
> -               die("impossible object directory");
> -       memcpy(pathname, dir, len);
> -       if (len && pathname[len-1] != '/')
> -               pathname[len++] = '/';
> +       if (pathname.len && pathname.buf[pathname.len - 1] != '/')
> +               strbuf_addch(&pathname, '/');

I see this pattern (add a trailing slash) in a few places too. Maybe we could make a wrapper for it.

-- 
Duy
Previous: Jeff KingNext: Michael Haggerty
Message 9 of 21 in “Fix two buffer overflows and remove a redundant var”
  1. 0/3 Fix two buffer overflows and remove a redundant varMichael Haggerty, Dec 17, 2013
  2. 1/3 prune-packed: fix a possible buffer overflowMichael Haggerty, Dec 17, 2013
  3. Duy NguyenDec 17, 2013
  4. Junio C HamanoDec 17, 2013
  5. Michael HaggertyDec 18, 2013
  6. Jeff KingDec 19, 2013
  7. Michael HaggertyDec 19, 2013
  8. Jeff KingDec 20, 2013
  9. Duy NguyenDec 19, 2013
  10. 2/3 prune_object_dir(): verify that path fits in the temporary bufferMichael Haggerty, Dec 17, 2013
  11. Junio C HamanoDec 17, 2013
  12. Jeff KingDec 17, 2013
  13. Junio C HamanoDec 18, 2013
  14. Jeff KingDec 18, 2013
  15. Junio C HamanoDec 18, 2013
  16. Jeff KingDec 18, 2013
  17. Junio C HamanoDec 18, 2013
  18. Jeff KingDec 18, 2013
  19. Antoine PelisseDec 17, 2013
  20. 3/3 cmd_repack(): remove redundant local variable "nr_packs"Michael Haggerty, Dec 17, 2013
  21. Stefan BellerDec 17, 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.