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

Re: [PATCH 5/8] get-repack --max-pack-size: write_object() takes 'limit' arg

From: Nicolas Pitre <hidden>
Date: 2016-06-15 22:43:03

On Mon, 9 Apr 2007, Dana How wrote:
On 4/8/07, Nicolas Pitre [off-list ref] wrote:
quoted
quoted
@@ -448,6 +480,12 @@ static off_t write_object(struct sha1file *f,
                      header[pos] = ofs & 127;
                      while (ofs >>= 7)
                              header[--pos] = 128 | (--ofs & 127);
+                     if ( limit && hdrlen + sizeof(header) - pos +
datalen + 20 >= limit ) {
quoted
+                             free(out);
+                             free(buf);
+                             return 0;
+                     }
+                     sha1write(f, header, hdrlen);
                      sha1write(f, header + pos, sizeof(header) - pos);
The above looks rather buggy to me.
OK, can you be more specific?
You're writing the content of the array 'header' twice in a row.  Sure 
the second time it is header + pos but it is still the result of an 
operation that used to put data into 'header' after the first content 
was already written out.  Right now it looks like the first write might 
contain clobbered data.


Nicolas
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help