aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Knudsen <busstoptaktik@users.noreply.github.com>2017-10-12 21:09:57 +0200
committerGitHub <noreply@github.com>2017-10-12 21:09:57 +0200
commit026294c6f44eb7d4e0bce7b6fa94a0866a5d5769 (patch)
treea5cc865e314f47ffeaef5745cf168c0741f10600 /src
parent446ce34042946015cb87b44aadefbff46b808866 (diff)
parentf6966b8d5ecef5474ceadd099975467ada140c57 (diff)
downloadPROJ-026294c6f44eb7d4e0bce7b6fa94a0866a5d5769.tar.gz
PROJ-026294c6f44eb7d4e0bce7b6fa94a0866a5d5769.zip
Merge pull request #602 from busstoptaktik/oss-fuzz-3620
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);
}