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