diff options
author | Yann Ylavic <ylavic@apache.org> | 2019-03-28 19:22:23 +0100 |
---|---|---|
committer | Yann Ylavic <ylavic@apache.org> | 2019-03-28 19:22:23 +0100 |
commit | f2a066e584a9f8cb5be326f4e3afe2da53375982 (patch) | |
tree | b8fd5e2000198f5735565ae327b047afc3d70531 /modules | |
parent | mod_cache: Fix parsing of quoted Cache-Control token arguments. PR 63288. (diff) | |
download | apache2-f2a066e584a9f8cb5be326f4e3afe2da53375982.tar.xz apache2-f2a066e584a9f8cb5be326f4e3afe2da53375982.zip |
mod_cache: follow up to r1856493: always terminate cache_strqtok() returns.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1856500 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules')
-rw-r--r-- | modules/cache/cache_util.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/modules/cache/cache_util.c b/modules/cache/cache_util.c index 2c5a30734a..ae00c10c8f 100644 --- a/modules/cache/cache_util.c +++ b/modules/cache/cache_util.c @@ -931,6 +931,7 @@ CACHE_DECLARE(char *)ap_cache_generate_name(apr_pool_t *p, int dirlevels, apr_status_t cache_strqtok(char *str, char **token, char **arg, char **last) { #define CACHE_TOKEN_SEPS "\t ," + apr_status_t rv = APR_SUCCESS; int quoted = 0; char *wpos; @@ -988,7 +989,6 @@ apr_status_t cache_strqtok(char *str, char **token, char **arg, char **last) } *wpos++ = *str; } - *wpos = '\0'; /* anything after should be trailing OWS or comma */ for (; *str; ++str) { @@ -997,12 +997,14 @@ apr_status_t cache_strqtok(char *str, char **token, char **arg, char **last) break; } if (*str != '\t' && *str != ' ') { - return APR_EINVAL; + rv = APR_EINVAL; + break; } } - *last = str; - return APR_SUCCESS; + *wpos = '\0'; + *last = str; + return rv; } /** |