]> granicus.if.org Git - apache/commitdiff
mod_cache: follow up to r1856493: always terminate cache_strqtok() returns.
authorYann Ylavic <ylavic@apache.org>
Thu, 28 Mar 2019 18:22:23 +0000 (18:22 +0000)
committerYann Ylavic <ylavic@apache.org>
Thu, 28 Mar 2019 18:22:23 +0000 (18:22 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1856500 13f79535-47bb-0310-9956-ffa450edef68

modules/cache/cache_util.c

index 2c5a30734aad48b20db336b931ad946ad52a4514..ae00c10c8f0403fb554cdb1e8d81d03fe6db910d 100644 (file)
@@ -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;
 }
 
 /**