Thread (6 messages) flat view 6 messages, 4 authors, 2016-06-15

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

From: Duy Nguyen <hidden>
Date: 2016-06-15 22:59:29

Possibly related (same subject, not in this thread)

On Wed, Dec 18, 2013 at 1:43 AM, Junio C Hamano [off-list ref] wrote:
Duy Nguyen [off-list ref] writes:
quoted
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.
 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help