Fix crash when attempting to play an IVF video in 8-bit.

git-svn-id: https://svn.eduke32.com/eduke32@6290 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2017-06-27 01:50:59 +00:00
parent 4b15e4629e
commit 6bbfbb5e1d

View file

@ -395,7 +395,7 @@ int32_t Anim_Play(const char *fn)
int32_t length = kfilelength(handle); int32_t length = kfilelength(handle);
if (length == 0) if (length <= 4)
{ {
OSD_Printf("Warning: skipping playback of empty ANM file \"%s\".\n", fn); OSD_Printf("Warning: skipping playback of empty ANM file \"%s\".\n", fn);
goto end_anim; goto end_anim;
@ -413,9 +413,19 @@ int32_t Anim_Play(const char *fn)
kread(handle, anim->animbuf, length); kread(handle, anim->animbuf, length);
kclose(handle); kclose(handle);
uint32_t firstfour;
Bmemcpy(&firstfour, anim->animbuf, 4);
// "DKIF" (.ivf)
if (firstfour == B_LITTLE32(0x46494B44))
goto end_anim;
int32_t numframes; int32_t numframes;
if (ANIM_LoadAnim(anim->animbuf, length) < 0 || (numframes = ANIM_NumFrames()) <= 0) // "LPF " (.anm)
if (firstfour != B_LITTLE32(0x2046504C) ||
ANIM_LoadAnim(anim->animbuf, length) < 0 ||
(numframes = ANIM_NumFrames()) <= 0)
{ {
// XXX: ANM_LoadAnim() still checks less than the bare minimum, // XXX: ANM_LoadAnim() still checks less than the bare minimum,
// e.g. ANM file could still be too small and not contain any frames. // e.g. ANM file could still be too small and not contain any frames.