aboutsummaryrefslogtreecommitdiff
path: root/src/param.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2021-12-02 17:33:57 +0100
committerEven Rouault <even.rouault@spatialys.com>2021-12-02 17:34:01 +0100
commit5974d4b3feb7bcee7c9579d5959fa73665d85d82 (patch)
tree803ec600a6a038409301192373e079aaaa8bb957 /src/param.cpp
parent7dc8a59217c41c8cfefe7f9d97cb7dae4a8b8fbd (diff)
downloadPROJ-5974d4b3feb7bcee7c9579d5959fa73665d85d82.tar.gz
PROJ-5974d4b3feb7bcee7c9579d5959fa73665d85d82.zip
PROJ string parsing: fix unquoting of parameter values when the parameter name is just one single character
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41462
Diffstat (limited to 'src/param.cpp')
-rw-r--r--src/param.cpp27
1 files changed, 0 insertions, 27 deletions
diff --git a/src/param.cpp b/src/param.cpp
index 21afc57f..0a9a66d8 100644
--- a/src/param.cpp
+++ b/src/param.cpp
@@ -9,31 +9,6 @@
#include "proj.h"
#include "proj_internal.h"
-static void unquote_string(char* param_str) {
-
- size_t len = strlen(param_str);
- // Remove leading and terminating spaces after equal sign
- const char* equal = strstr(param_str, "=\"");
- if( equal && equal - param_str + 1 > 2 && param_str[len-1] == '"' ) {
- size_t dst = equal + 1 - param_str;
- size_t src = dst + 1;
- for( ; param_str[src]; dst++, src++)
- {
- if( param_str[src] == '"' ) {
- if( param_str[src+1] == '"' ) {
- src++;
- } else {
- break;
- }
- }
- param_str[dst] = param_str[src];
- }
- param_str[dst] = '\0';
- }
-
-}
-
-
/* create parameter list entry */
paralist *pj_mkparam(const char *str) {
paralist *newitem;
@@ -44,7 +19,6 @@ paralist *pj_mkparam(const char *str) {
if (*str == '+')
++str;
(void)strcpy(newitem->param, str);
- unquote_string(newitem->param);
}
return newitem;
}
@@ -86,7 +60,6 @@ paralist *pj_mkparam_ws (const char *str, const char **next_str) {
if (nullptr==newitem)
return nullptr;
memcpy(newitem->param, str, len);
- unquote_string(newitem->param);
newitem->used = 0;
newitem->next = nullptr;