diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2021-12-02 17:33:57 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2021-12-02 17:34:01 +0100 |
| commit | 5974d4b3feb7bcee7c9579d5959fa73665d85d82 (patch) | |
| tree | 803ec600a6a038409301192373e079aaaa8bb957 /src/param.cpp | |
| parent | 7dc8a59217c41c8cfefe7f9d97cb7dae4a8b8fbd (diff) | |
| download | PROJ-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.cpp | 27 |
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; |
