On Mon, Sep 21, 2015 at 05:27:18PM -0000, rhuij...@apache.org wrote: > Author: rhuijben > Date: Mon Sep 21 17:27:11 2015 > New Revision: 1704374 > > URL: http://svn.apache.org/viewvc?rev=1704374&view=rev > Log: > Complete the parsing routines for parsing git-like binary blobs. This patch > completes the parsing, but leaves out the patch application code as that > needs a bit more work before committing.
> + while (base85_len) > + { > + unsigned info = 0; Please use an explicit integer type. 'unsigned int', or 'unsigned long', etc. > + apr_ssize_t i, n; > + > + for (i = 0; i < 5; i++) > + { > + int value; > + > + SVN_ERR(base85_value(&value, base85_data[i])); > + info *= 85; What happens if 'info' overflows here? > + info += value; > + } > + > + for (i = 0, n=24; i < 4; i++, n-=8) > + { > + if (i < output_len) > + output_data[i] = (info >> n) & 0xFF; > + } > + > + base85_data += 5; > + base85_len -= 5; > + output_data += 4; > + output_len -= 4; > + } > + > + return SVN_NO_ERROR; > + while (remaining && (b85b->buf_size > b85b->buf_pos > + || b85b->next_pos < b85b->end_pos)) > + { > + svn_stringbuf_t *line; > + svn_boolean_t at_eof; > + > + apr_size_t available = b85b->buf_size - b85b->buf_pos; > + if (available) > + { > + apr_size_t n = (remaining < available) ? remaining : available; > + > + memcpy(dest, b85b->buffer + b85b->buf_pos, n); > + dest += n; > + remaining -= n; What if 'remaining' becomes negative here? > + b85b->buf_pos += n; > + > + if (!remaining) > + return SVN_NO_ERROR; /* *len = OK */ > + } > +