mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 09:54:35 +00:00
bloblist: check bloblist with specified buffer size
Instead of expecting the bloblist total size to be the same as the pre-allocated buffer size, practically we are more interested in whether the pre-allocated buffer size is bigger than the bloblist total size. Signed-off-by: Raymond Mao <raymond.mao@linaro.org> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
parent
1c4751fd1a
commit
6725421493
3 changed files with 7 additions and 6 deletions
|
@ -384,7 +384,7 @@ int bloblist_check(ulong addr, uint size)
|
|||
return log_msg_ret("Bad magic", -ENOENT);
|
||||
if (hdr->version != BLOBLIST_VERSION)
|
||||
return log_msg_ret("Bad version", -EPROTONOSUPPORT);
|
||||
if (!hdr->total_size || (size && hdr->total_size != size))
|
||||
if (!hdr->total_size || (size && hdr->total_size > size))
|
||||
return log_msg_ret("Bad total size", -EFBIG);
|
||||
if (hdr->used_size > hdr->total_size)
|
||||
return log_msg_ret("Bad used size", -ENOENT);
|
||||
|
|
|
@ -348,12 +348,13 @@ int bloblist_new(ulong addr, uint size, uint flags, uint align_log2);
|
|||
* bloblist_check() - Check if a bloblist exists
|
||||
*
|
||||
* @addr: Address of bloblist
|
||||
* @size: Expected size of blobsize, or 0 to detect the size
|
||||
* @size: Reserved space size for blobsize, or 0 to use the total size
|
||||
* Return: 0 if OK, -ENOENT if the magic number doesn't match (indicating that
|
||||
* there problem is no bloblist at the given address), -EPROTONOSUPPORT
|
||||
* there problem is no bloblist at the given address) or any fields for header
|
||||
* size, used size and total size do not match, -EPROTONOSUPPORT
|
||||
* if the version does not match, -EIO if the checksum does not match,
|
||||
* -EFBIG if the expected size does not match the detected size, -ENOSPC
|
||||
* if the size is not large enough to hold the headers
|
||||
* -EFBIG if the reserved space size is small than the total size or total size
|
||||
* is 0
|
||||
*/
|
||||
int bloblist_check(ulong addr, uint size);
|
||||
|
||||
|
|
|
@ -207,7 +207,7 @@ static int bloblist_test_checksum(struct unit_test_state *uts)
|
|||
hdr->flags++;
|
||||
|
||||
hdr->total_size--;
|
||||
ut_asserteq(-EFBIG, bloblist_check(TEST_ADDR, TEST_BLOBLIST_SIZE));
|
||||
ut_asserteq(-EIO, bloblist_check(TEST_ADDR, TEST_BLOBLIST_SIZE));
|
||||
hdr->total_size++;
|
||||
|
||||
hdr->spare++;
|
||||
|
|
Loading…
Add table
Reference in a new issue