diff options
| author | backporting[bot] <42222807+backporting[bot]@users.noreply.github.com> | 2019-10-18 22:40:53 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-10-18 22:40:53 +0200 |
| commit | f94f1ddeaa83bab4f6f3f9d5720a777e569c781b (patch) | |
| tree | a5961d70cbefceba5f7f5e6ec08cbfa0fd2abb3c /src/datum_set.cpp | |
| parent | 117ddfdc7f4ad49648abd0e717703ad97bb4f606 (diff) | |
| download | PROJ-f94f1ddeaa83bab4f6f3f9d5720a777e569c781b.tar.gz PROJ-f94f1ddeaa83bab4f6f3f9d5720a777e569c781b.zip | |
[Backport 6.2] Fix segfaults in case of out-of-memory situations (#1684) (fixes #1678)
Diffstat (limited to 'src/datum_set.cpp')
| -rw-r--r-- | src/datum_set.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/datum_set.cpp b/src/datum_set.cpp index c1cb4cb9..873d7be5 100644 --- a/src/datum_set.cpp +++ b/src/datum_set.cpp @@ -85,10 +85,22 @@ int pj_datum_set(projCtx ctx, paralist *pl, PJ *projdef) entry[ sizeof(entry) - 1 ] = '\0'; curr = curr->next = pj_mkparam(entry); + if (nullptr == curr) + { + pj_ctx_set_errno(ctx, ENOMEM); + return 1; + } } if( pj_datums[i].defn && strlen(pj_datums[i].defn) > 0 ) + { curr = curr->next = pj_mkparam(pj_datums[i].defn); + if (nullptr == curr) + { + pj_ctx_set_errno(ctx, ENOMEM); + return 1; + } + } (void)curr; /* make clang static analyzer happy */ } |
