aboutsummaryrefslogtreecommitdiff
path: root/src/datum_set.cpp
diff options
context:
space:
mode:
authorbackporting[bot] <42222807+backporting[bot]@users.noreply.github.com>2019-10-18 22:40:53 +0200
committerEven Rouault <even.rouault@spatialys.com>2019-10-18 22:40:53 +0200
commitf94f1ddeaa83bab4f6f3f9d5720a777e569c781b (patch)
treea5961d70cbefceba5f7f5e6ec08cbfa0fd2abb3c /src/datum_set.cpp
parent117ddfdc7f4ad49648abd0e717703ad97bb4f606 (diff)
downloadPROJ-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.cpp12
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 */
}