Skip to contentSkip to conversation

dtc: Audit and fix valgrind errors

PATCH Applied David Gibson 2 participants 2 messages Feb 24, 2010

lore
Share & tools
lore
#0 lore raw

The somewhat embarrasing bug in the first version of my previous patch would have been detected by valgrind. Thus reminded, I've run the testsuite under valgrind and fixed any errors I found. This turned out to be just some uninitialized buffers in test programs. The fragments of uninitialized data aren't particularly important, but we might as well squash the valgrind warnings, so that future valgrind errors will stand out.

tests/mangle-layout.c +4 -3
Index: dtc/tests/mangle-layout.c
===================================================================
@@ -65,7 +65,7 @@ static void new_header(struct bufstate *
 
 static void add_block(struct bufstate *buf, int version, char block, const void *fdt)
 {
-	int align, size;
+	int align, size, oldsize;
 	const void *src;
 	int offset;
 
@@ -95,9 +95,10 @@ static void add_block(struct bufstate *b
 		CONFIG("Bad block '%c'", block);
 	}
 
-	offset = ALIGN(buf->size, align);
-
+	oldsize = buf->size;
+	offset = ALIGN(oldsize, align);
 	expand_buf(buf, offset+size);
+	memset(buf->buf + oldsize, 0, offset - oldsize);
 
 	memcpy(buf->buf + offset, src, size);
 
tests/open_pack.c +2 -0
Index: dtc/tests/open_pack.c
===================================================================
@@ -48,6 +48,8 @@ int main(int argc, char *argv[])
 	bufsize = oldsize * 2;
 
 	buf = xmalloc(bufsize);
+	/* don't leak uninitialized memory into our output */
+	memset(buf, 0, bufsize);
 
 	fdt1 = buf;
 	err = fdt_open_into(fdt, fdt1, bufsize);
Signature · 4 lines
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson
Applied
#1 lore raw
Quoted 9 lines

The somewhat embarrasing bug in the first version of my previous patch would have been detected by valgrind. Thus reminded, I've run the testsuite under valgrind and fixed any errors I found. This turned out to be just some uninitialized buffers in test programs. The fragments of uninitialized data aren't particularly important, but we might as well squash the valgrind warnings, so that future valgrind errors will stand out.

Applied.

Thanks,
jdl