Julius Werner has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/31564 )
Change subject: libpayload: cbfs: Check decompressed size when loading files. ......................................................................
Patch Set 1:
(2 comments)
https://review.coreboot.org/#/c/31564/1/payloads/libpayload/libcbfs/cbfs_cor... File payloads/libpayload/libcbfs/cbfs_core.c:
https://review.coreboot.org/#/c/31564/1/payloads/libpayload/libcbfs/cbfs_cor... PS1, Line 259: cbfs_decompress
What is more scary is if the size doesn't match, we can overflow the dest buffer because ... […]
We should probably just change cbfs_decompress to use ulzman() and ulz4n() instead? (Would need to add another parameter for the source size, then.)
https://review.coreboot.org/#/c/31564/1/payloads/libpayload/libcbfs/cbfs_cor... PS1, Line 259: if (ret != NULL && cbfs_decompress(algo, data, ret, *size) != *size) {
I’d prefer a separate check, with a separate error message.
I agree an error message would be nice, although one should probably be enough (e.g. "can't decompress ...").