aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Knudsen <thokn@sdfe.dk>2017-10-12 20:39:41 +0200
committerThomas Knudsen <thokn@sdfe.dk>2017-10-12 20:39:41 +0200
commitf6966b8d5ecef5474ceadd099975467ada140c57 (patch)
treee30bfd447c82c84d67f14f028d8665b225a2220f /src
parentde5059b4efb088f5b88ef73878bda3fc8b6609d0 (diff)
downloadPROJ-f6966b8d5ecef5474ceadd099975467ada140c57.tar.gz
PROJ-f6966b8d5ecef5474ceadd099975467ada140c57.zip
Resolve OSS-Fuzz issue 3620
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3620 Credit to OSS-Fuzz
Diffstat (limited to 'src')
-rw-r--r--src/PJ_pipeline.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/PJ_pipeline.c b/src/PJ_pipeline.c
index d1ddf65f..137fdec8 100644
--- a/src/PJ_pipeline.c
+++ b/src/PJ_pipeline.c
@@ -269,15 +269,18 @@ static void *destructor (PJ *P, int errlev) {
if (0==P->opaque)
return pj_default_destructor (P, errlev);
- for (i = 0; i < P->opaque->steps; i++)
- P->opaque->pipeline[i+1]->destructor (P->opaque->pipeline[i+1], errlev);
+ /* Deallocate each pipeine step, then pipeline array */
+ if (0!=P->opaque->pipeline)
+ for (i = 0; i < P->opaque->steps; i++)
+ if (0!=P->opaque->pipeline[i+1])
+ P->opaque->pipeline[i+1]->destructor (P->opaque->pipeline[i+1], errlev);
+ pj_dealloc (P->opaque->pipeline);
pj_dealloc (P->opaque->reverse_step);
pj_dealloc (P->opaque->omit_forward);
pj_dealloc (P->opaque->omit_inverse);
pj_dealloc (P->opaque->argv);
pj_dealloc (P->opaque->current_argv);
- pj_dealloc (P->opaque->pipeline);
return pj_default_destructor(P, errlev);
}