diff options
| author | Eric Wong <normalperson@yhbt.net> | 2009-03-14 18:41:47 -0700 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2009-03-15 08:46:15 +0100 | 
| commit | 112973615a78ce61fd6e767128df03b075be72ca (patch) | |
| tree | cf4b3eb63f42d77ac77f74d951f583e1503886aa | |
| parent | ui-tree: escape ascii-text properly in hexdump view (diff) | |
| download | cgit-112973615a78ce61fd6e767128df03b075be72ca.tar.gz cgit-112973615a78ce61fd6e767128df03b075be72ca.tar.bz2 cgit-112973615a78ce61fd6e767128df03b075be72ca.zip | |
fix segfault when displaying empty blobs
When size is zero, subtracting one from it turns it into
ULONG_MAX which causes an out-of-bounds access on buf.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| -rw-r--r-- | ui-tree.c | 13 | 
1 files changed, 8 insertions, 5 deletions
| @@ -25,11 +25,14 @@ static void print_text_buffer(char *buf, unsigned long size)  	html("<tr><td class='linenumbers'><pre>");  	idx = 0;  	lineno = 0; -	htmlf(numberfmt, ++lineno); -	while(idx < size - 1) { // skip absolute last newline -		if (buf[idx] == '\n') -			htmlf(numberfmt, ++lineno); -		idx++; + +	if (size) { +		htmlf(numberfmt, ++lineno); +		while(idx < size - 1) { // skip absolute last newline +			if (buf[idx] == '\n') +				htmlf(numberfmt, ++lineno); +			idx++; +		}  	}  	html("</pre></td>\n");  	html("<td class='lines'><pre><code>"); | 
