lib/lzma: Respect dstn argument

Don't write more bytes than the caller requests.
Based on I484b5c1e3809781033d146609a35a9e5e666c8ed.

Change-Id: I336de417c7cd6f35cf84947fc4ae161c15bd93ef
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/25222
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Patrick Rudolph 2018-03-16 12:25:28 +01:00 committed by Patrick Georgi
parent cf1ba95fa4
commit f595ba2a9e
1 changed files with 2 additions and 0 deletions

View File

@ -37,6 +37,8 @@ size_t ulzman(const void *src, size_t srcn, void *dst, size_t dstn)
* byte and re-construct. */ * byte and re-construct. */
cp = src + LZMA_PROPERTIES_SIZE; cp = src + LZMA_PROPERTIES_SIZE;
outSize = cp[3] << 24 | cp[2] << 16 | cp[1] << 8 | cp[0]; outSize = cp[3] << 24 | cp[2] << 16 | cp[1] << 8 | cp[0];
if (outSize > dstn)
outSize = dstn;
if (LzmaDecodeProperties(&state.Properties, properties, if (LzmaDecodeProperties(&state.Properties, properties,
LZMA_PROPERTIES_SIZE) != LZMA_RESULT_OK) { LZMA_PROPERTIES_SIZE) != LZMA_RESULT_OK) {
printk(BIOS_WARNING, "lzma: Incorrect stream properties.\n"); printk(BIOS_WARNING, "lzma: Incorrect stream properties.\n");