Mercurial > hg > dmlib
changeset 1750:b9f3c1796fba
More granular error handling in RLE decoding.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 11 Jun 2018 14:42:12 +0300 |
parents | feaf5cf07603 |
children | 768fddda73e9 |
files | tools/lib64gfx.c |
diffstat | 1 files changed, 9 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/tools/lib64gfx.c Mon Jun 11 14:23:52 2018 +0300 +++ b/tools/lib64gfx.c Mon Jun 11 14:42:12 2018 +0300 @@ -446,11 +446,17 @@ // A simple marker byte RLE variant: [Marker] [count] [data] if ((cfg->flags & DM_RLE_BYTE_RUNS) && data == cfg->rleMarkerB) { - if (!dmGrowBufGetU8(&src, &tmp1) || - !dmGrowBufGetU8(&src, &tmp2)) + if (!dmGrowBufGetU8(&src, &tmp1)) { res = dmError(DMERR_INVALID_DATA, - "%s: RLE: Invalid data/out of data for byte length run sequence.\n", + "%s: RLE: Invalid data/out of data for byte length run sequence (1).\n", + cfg->func); + goto out; + } + if (!dmGrowBufGetU8(&src, &tmp2)) + { + res = dmError(DMERR_INVALID_DATA, + "%s: RLE: Invalid data/out of data for byte length run sequence (2).\n", cfg->func); goto out; }