@@ -98,19 +98,24 @@ VCL_STRING vmod_modifyparams(VRT_CTX, VCL_STRING uri, VCL_STRING params_in,
98
98
99
99
CHECK_OBJ_NOTNULL (ctx , VRT_CTX_MAGIC );
100
100
101
- // Return if the URL is NULL.
101
+ // Return if the URI is NULL.
102
102
if (uri == NULL ) {
103
103
VRT_fail (ctx , "uri is NULL" );
104
104
return NULL ;
105
105
}
106
106
107
- // Return if there's no query string.
107
+ // Check if there is a query string.
108
108
query_str = strchr (uri , '?' );
109
109
if (query_str == NULL ) {
110
- return uri ;
110
+ char * ws_uri = WS_Copy (ctx -> ws , uri , strlen (uri ) + 1 );
111
+ if (ws_uri == NULL ) {
112
+ VRT_fail (ctx ,
113
+ "WS_Copy: out of workspace when returning unmodified URI" );
114
+ return NULL ;
115
+ }
116
+ return ws_uri ;
111
117
}
112
118
113
- // Copy the base URL up to '?' into the workspace.
114
119
size_t base_uri_len = query_str - uri ;
115
120
size_t query_str_len = strlen (query_str + 1 ); // +1 to skip '?'
116
121
size_t new_uri_max_len =
@@ -129,13 +134,12 @@ VCL_STRING vmod_modifyparams(VRT_CTX, VCL_STRING uri, VCL_STRING params_in,
129
134
// Skip past the '?' to get the query string.
130
135
query_str = query_str + 1 ;
131
136
132
- // If there are no query params, return the URL .
137
+ // If there are no query params, return the base URI from workspace .
133
138
if (* query_str == '\0' ) {
134
139
return new_uri ;
135
140
}
136
141
137
- // Check if params_in is an empty string and if so, return only
138
- // the URL which removes all query params.
142
+ // If params_in is NULL or empty, remove all query params.
139
143
if (params_in == NULL || * params_in == '\0' ) {
140
144
return new_uri ;
141
145
}
@@ -168,7 +172,7 @@ VCL_STRING vmod_modifyparams(VRT_CTX, VCL_STRING uri, VCL_STRING params_in,
168
172
// Tokenize the query string into parameters.
169
173
no_param = tokenize_querystring (ctx , & head , query_str_copy );
170
174
if (no_param < 0 ) {
171
- VRT_fail (ctx , "tokensize_querystring: no_param: out of workspace " );
175
+ VRT_fail (ctx , "tokenize_querystring failed " );
172
176
return NULL ;
173
177
}
174
178
0 commit comments