diff options
author | James Almer <jamrial@gmail.com> | 2019-09-28 23:11:06 -0300 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2019-11-11 20:18:47 +0100 |
commit | f0749555d7f84d0db09b006cd40db10e9550e252 (patch) | |
tree | f31816ccbf6105bfbb6ebfcde62ed501b5b59a80 | |
parent | 677b36294845c14501d2d2288ab5e25119277ef5 (diff) | |
download | ffmpeg-f0749555d7f84d0db09b006cd40db10e9550e252.tar.gz |
avcodec/fitsdec: fix use of uninitialised values
header.data_max and header.data_min are not necessarely set on all decoding scenarios.
Fixes a Valgrind reported regression since cfa193779103c97bbfc28273a0ab12c114b6786d.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit e3f0ecfc57889de0e0a359ec30b77851d53cea87)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavcodec/fitsdec.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/libavcodec/fitsdec.c b/libavcodec/fitsdec.c index 88b841a964..a20b8faf9e 100644 --- a/libavcodec/fitsdec.c +++ b/libavcodec/fitsdec.c @@ -195,7 +195,6 @@ static int fits_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, uint8_t *dst8; uint16_t *dst16; uint64_t t; - double scale; FITSHeader header; FITSContext * fitsctx = avctx->priv_data; @@ -205,12 +204,6 @@ static int fits_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, if (ret < 0) return ret; - scale = header.data_max - header.data_min; - if (scale <= 0 || !isfinite(scale)) { - scale = 1; - } - scale = 1/scale; - if (header.rgb) { if (header.bitpix == 8) { if (header.naxisn[2] == 3) { @@ -271,6 +264,13 @@ static int fits_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, CASE_RGB(16, dst16, uint16_t, AV_RB16); } } else { + double scale = header.data_max - header.data_min; + + if (scale <= 0 || !isfinite(scale)) { + scale = 1; + } + scale = 1/scale; + switch (header.bitpix) { #define CASE_GRAY(cas, dst, type, t, rd) \ case cas: \ |