From db01ddfd49ee6177c738f410496574105e7e5e44 Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Wed, 12 Aug 2015 12:01:01 +0200 Subject: cbfstool: prepare moving tests earlier The assert() makes sure the if() holds true. But that assert won't survive for long. Change-Id: Iab7d2bc7bfebb3f3b3ce70dc5bd041902e14bd7a Signed-off-by: Patrick Georgi Reviewed-on: http://review.coreboot.org/11220 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin --- util/cbfstool/cbfs_image.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'util/cbfstool') diff --git a/util/cbfstool/cbfs_image.c b/util/cbfstool/cbfs_image.c index ddc9cf5366..1a20fbae80 100644 --- a/util/cbfstool/cbfs_image.c +++ b/util/cbfstool/cbfs_image.c @@ -616,18 +616,20 @@ int cbfs_add_entry(struct cbfs_image *image, struct buffer *buffer, // We need to put content here, and the case is really // complicated... assert(content_offset); - if (addr_next < content_offset) { - DEBUG("Not for specified offset yet"); - continue; - } else if (addr > content_offset) { - DEBUG("Exceed specified content_offset."); - break; - } else if (addr + header_size > content_offset) { - ERROR("Not enough space for header.\n"); - break; - } else if (content_offset + buffer->size > addr_next) { - ERROR("Not enough space for content.\n"); - break; + if (content_offset > 0) { + if (addr_next < content_offset) { + DEBUG("Not for specified offset yet"); + continue; + } else if (addr > content_offset) { + DEBUG("Exceed specified content_offset."); + break; + } else if (addr + header_size > content_offset) { + ERROR("Not enough space for header.\n"); + break; + } else if (content_offset + buffer->size > addr_next) { + ERROR("Not enough space for content.\n"); + break; + } } // TODO there are more few tricky cases that we may -- cgit v1.2.3