File tree Expand file tree Collapse file tree 1 file changed +13
-10
lines changed
src/include/grpc_transcoding Expand file tree Collapse file tree 1 file changed +13
-10
lines changed Original file line number Diff line number Diff line change @@ -224,20 +224,23 @@ inline int hex_digit_to_int(char c) {
224224// also return what character is escaped.
225225bool GetEscapedChar (const std::string& src, size_t i,
226226 UrlUnescapeSpec unescape_spec, char * out) {
227- const bool unescape_slash_char =
228- unescape_spec == UrlUnescapeSpec::kAllCharacters ;
229- const bool unescape_reserved_chars =
230- (unescape_spec == UrlUnescapeSpec::kAllCharacters ) ||
231- (unescape_spec == UrlUnescapeSpec::kAllCharactersExceptSlash );
232227 if (i + 2 < src.size () && src[i] == ' %' ) {
233228 if (ascii_isxdigit (src[i + 1 ]) && ascii_isxdigit (src[i + 2 ])) {
234229 char c =
235230 (hex_digit_to_int (src[i + 1 ]) << 4 ) | hex_digit_to_int (src[i + 2 ]);
236- if (!unescape_slash_char && c == ' /' ) {
237- return false ;
238- }
239- if (!unescape_reserved_chars && c != ' /' && IsReservedChar (c)) {
240- return false ;
231+ switch (unescape_spec) {
232+ case UrlUnescapeSpec::kAllCharactersExceptReserved :
233+ if (IsReservedChar (c)) {
234+ return false ;
235+ }
236+ break ;
237+ case UrlUnescapeSpec::kAllCharactersExceptSlash :
238+ if (c == ' /' ) {
239+ return false ;
240+ }
241+ break ;
242+ case UrlUnescapeSpec::kAllCharacters :
243+ break ;
241244 }
242245 *out = c;
243246 return true ;
You can’t perform that action at this time.
0 commit comments