Commit 42a1f1d7 authored by Reimar Döffinger's avatar Reimar Döffinger

Avoid uninitialized data in lcldec when ofs is 0 in MSZH.

Signed-off-by: 's avatarReimar Döffinger <Reimar.Doeffinger@gmx.de>
parent 4962edf8
...@@ -96,7 +96,13 @@ static unsigned int mszh_decomp(const unsigned char * srcptr, int srclen, unsign ...@@ -96,7 +96,13 @@ static unsigned int mszh_decomp(const unsigned char * srcptr, int srclen, unsign
ofs = FFMIN(ofs, destptr - destptr_bak); ofs = FFMIN(ofs, destptr - destptr_bak);
cnt *= 4; cnt *= 4;
cnt = FFMIN(cnt, destptr_end - destptr); cnt = FFMIN(cnt, destptr_end - destptr);
av_memcpy_backptr(destptr, ofs, cnt); if (ofs) {
av_memcpy_backptr(destptr, ofs, cnt);
} else {
// Not known what the correct behaviour is, but
// this at least avoids uninitialized data.
memset(destptr, 0, cnt);
}
destptr += cnt; destptr += cnt;
} }
maskbit >>= 1; maskbit >>= 1;
......
...@@ -67,9 +67,6 @@ int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen); ...@@ -67,9 +67,6 @@ int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen);
* *
* cnt > back is valid, this will copy the bytes we just copied, * cnt > back is valid, this will copy the bytes we just copied,
* thus creating a repeating pattern with a period length of back. * thus creating a repeating pattern with a period length of back.
* Note that lcldec currently can set back == 0 - which is wrong and
* makes no sense, but the code should at least avoid crashing or hanging
* for this case.
*/ */
void av_memcpy_backptr(uint8_t *dst, int back, int cnt); void av_memcpy_backptr(uint8_t *dst, int back, int cnt);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment