Commit d73447c2 authored by Rusty Russell's avatar Rusty Russell

tal: check headers more carefully.

We sanity check tal headers by ensuring that the pointers are in the
bounds of things we've allocated.  But the first one we check is the
prop ptr, which may also be a literal: this is_literal() dereferences
the pointer, which means we usually crash here if it's not a tal
object.

Move that last, and we have far more success with our sanity checking.
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 0f6d854a
......@@ -154,11 +154,11 @@ static struct tal_hdr *to_tal_hdr(const void *ctx)
t = (struct tal_hdr *)((char *)ctx - sizeof(struct tal_hdr));
check_bounds(t);
if (t->prop && !is_literal(t->prop))
check_bounds(t->prop);
check_bounds(ignore_destroying_bit(t->parent_child));
check_bounds(t->list.next);
check_bounds(t->list.prev);
if (t->prop && !is_literal(t->prop))
check_bounds(t->prop);
return t;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment