aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-08-23 17:50:12 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-08-23 18:06:54 +0200
commit9e477a37703318cb86d8ed1d426929235aa02b67 (patch)
tree34786dbaec7cb7623ab1981655c84e20ae48b957
parent09927f3eaa93e31dd90ab8ee66dc1ad867b3365f (diff)
downloadffmpeg-9e477a37703318cb86d8ed1d426929235aa02b67.tar.gz
jpeg2000: fix null pointer dereference in case of malloc failure
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/jpeg2000.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/libavcodec/jpeg2000.c b/libavcodec/jpeg2000.c
index 77bf34e610..36e6ff1a5a 100644
--- a/libavcodec/jpeg2000.c
+++ b/libavcodec/jpeg2000.c
@@ -507,17 +507,19 @@ void ff_jpeg2000_cleanup(Jpeg2000Component *comp, Jpeg2000CodingStyle *codsty)
Jpeg2000ResLevel *reslevel = comp->reslevel + reslevelno;
for (bandno = 0; bandno < reslevel->nbands; bandno++) {
- Jpeg2000Band *band = reslevel->band + bandno;
- for (precno = 0; precno < reslevel->num_precincts_x * reslevel->num_precincts_y; precno++) {
- if (band->prec) {
- Jpeg2000Prec *prec = band->prec + precno;
- av_freep(&prec->zerobits);
- av_freep(&prec->cblkincl);
- av_freep(&prec->cblk);
+ if (reslevel->band) {
+ Jpeg2000Band *band = reslevel->band + bandno;
+ for (precno = 0; precno < reslevel->num_precincts_x * reslevel->num_precincts_y; precno++) {
+ if (band->prec) {
+ Jpeg2000Prec *prec = band->prec + precno;
+ av_freep(&prec->zerobits);
+ av_freep(&prec->cblkincl);
+ av_freep(&prec->cblk);
+ }
}
- }
- av_freep(&band->prec);
+ av_freep(&band->prec);
+ }
}
av_freep(&reslevel->band);
}