diff options
| author | Mathieu Malaterre <mathieu.malaterre@gmail.com> | 2012-10-02 07:09:57 +0000 |
|---|---|---|
| committer | Mathieu Malaterre <mathieu.malaterre@gmail.com> | 2012-10-02 07:09:57 +0000 |
| commit | e55d5e29e0017e55a07a6c8d562091e31697341c (patch) | |
| tree | d9857411d21a6b50e457d92f9b5f4c9e12f822e4 /libopenjpeg | |
| parent | c02f145cd1f8714727178d8a74cdd21a5327b107 (diff) | |
[1.5] division by zero in j2k_read_siz
Fixes issue 169
Diffstat (limited to 'libopenjpeg')
| -rw-r--r-- | libopenjpeg/j2k.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libopenjpeg/j2k.c b/libopenjpeg/j2k.c index 3f8e2790..2900e911 100644 --- a/libopenjpeg/j2k.c +++ b/libopenjpeg/j2k.c @@ -468,6 +468,12 @@ static void j2k_read_siz(opj_j2k_t *j2k) { } #endif /* USE_JPWL */ + /* prevent division by zero */ + if (!(cp->tdx * cp->tdy)) { + opj_event_msg(j2k->cinfo, EVT_ERROR, "JPWL: invalid tile size (tdx: %d, tdy: %d)\n", cp->tdx, cp->tdy); + return; + } + image->comps = (opj_image_comp_t*) opj_calloc(image->numcomps, sizeof(opj_image_comp_t)); for (i = 0; i < image->numcomps; i++) { int tmp, w, h; @@ -506,6 +512,12 @@ static void j2k_read_siz(opj_j2k_t *j2k) { } #endif /* USE_JPWL */ + /* prevent division by zero */ + if (!(image->comps[i].dx * image->comps[i].dy)) { + opj_event_msg(j2k->cinfo, EVT_ERROR, "JPWL: invalid component size (dx: %d, dy: %d)\n", image->comps[i].dx, image->comps[i].dy); + return; + } + /* TODO: unused ? */ w = int_ceildiv(image->x1 - image->x0, image->comps[i].dx); h = int_ceildiv(image->y1 - image->y0, image->comps[i].dy); |
