diff options
| author | yonarw <yonarw@gmail.com> | 2019-10-18 22:34:29 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-10-18 22:34:29 +0200 |
| commit | 00666ee8352ea188f89c53bc38823ab711dacde5 (patch) | |
| tree | 154a6c994797b98ca47085fa78699d902430e678 /src/datum_set.cpp | |
| parent | f9ba18a4d03e6219f0da0511a5f3e8eadf1851b4 (diff) | |
| download | PROJ-00666ee8352ea188f89c53bc38823ab711dacde5.tar.gz PROJ-00666ee8352ea188f89c53bc38823ab711dacde5.zip | |
Fix segfaults in case of out-of-memory situations (fixes #1678) (#1679)
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 */ } |
