1- /* auto-generated on 2023-05-16 13:48:47  -0400. Do not edit! */
1+ /* auto-generated on 2023-05-19 00:02:33  -0400. Do not edit! */
22/* begin file src/ada.cpp */
33#include "ada.h"
44/* begin file src/checkers.cpp */
@@ -10001,8 +10001,9 @@ static_assert(sizeof(is_forbidden_domain_code_point_table_or_upper) == 256);
1000110001static_assert(is_forbidden_domain_code_point_table_or_upper[uint8_t('A')] == 2);
1000210002static_assert(is_forbidden_domain_code_point_table_or_upper[uint8_t('Z')] == 2);
1000310003
10004- ada_really_inline constexpr bool contains_forbidden_domain_code_point_or_upper(
10005-     const char* input, size_t length) noexcept {
10004+ ada_really_inline constexpr uint8_t
10005+ contains_forbidden_domain_code_point_or_upper(const char* input,
10006+                                               size_t length) noexcept {
1000610007  size_t i = 0;
1000710008  uint8_t accumulator{};
1000810009  for (; i + 4 <= length; i += 4) {
@@ -10677,7 +10678,7 @@ ada_really_inline size_t find_next_host_delimiter_special(
1067710678                        has_zero_byte(xor3) | has_zero_byte(xor4) |
1067810679                        has_zero_byte(xor5);
1067910680    if (is_match) {
10680-       return i + index_of_first_set_byte(is_match);
10681+       return size_t( i + index_of_first_set_byte(is_match) );
1068110682    }
1068210683  }
1068310684  if (i < view.size()) {
@@ -10695,7 +10696,7 @@ ada_really_inline size_t find_next_host_delimiter_special(
1069510696                        has_zero_byte(xor3) | has_zero_byte(xor4) |
1069610697                        has_zero_byte(xor5);
1069710698    if (is_match) {
10698-       return i + index_of_first_set_byte(is_match);
10699+       return size_t( i + index_of_first_set_byte(is_match) );
1069910700    }
1070010701  }
1070110702  return view.size();
@@ -10739,7 +10740,7 @@ ada_really_inline size_t find_next_host_delimiter(std::string_view view,
1073910740    uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) |
1074010741                        has_zero_byte(xor4) | has_zero_byte(xor5);
1074110742    if (is_match) {
10742-       return i + index_of_first_set_byte(is_match);
10743+       return size_t( i + index_of_first_set_byte(is_match) );
1074310744    }
1074410745  }
1074510746  if (i < view.size()) {
@@ -10757,7 +10758,7 @@ ada_really_inline size_t find_next_host_delimiter(std::string_view view,
1075710758    uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) |
1075810759                        has_zero_byte(xor4) | has_zero_byte(xor5);
1075910760    if (is_match) {
10760-       return i + index_of_first_set_byte(is_match);
10761+       return size_t( i + index_of_first_set_byte(is_match) );
1076110762    }
1076210763  }
1076310764  return view.size();
@@ -11064,7 +11065,7 @@ find_authority_delimiter_special(std::string_view view) noexcept {
1106411065    uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) |
1106511066                        has_zero_byte(xor3) | has_zero_byte(xor4);
1106611067    if (is_match) {
11067-       return i + index_of_first_set_byte(is_match);
11068+       return size_t( i + index_of_first_set_byte(is_match) );
1106811069    }
1106911070  }
1107011071
@@ -11079,7 +11080,7 @@ find_authority_delimiter_special(std::string_view view) noexcept {
1107911080    uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) |
1108011081                        has_zero_byte(xor3) | has_zero_byte(xor4);
1108111082    if (is_match) {
11082-       return i + index_of_first_set_byte(is_match);
11083+       return size_t( i + index_of_first_set_byte(is_match) );
1108311084    }
1108411085  }
1108511086
@@ -11112,7 +11113,7 @@ find_authority_delimiter(std::string_view view) noexcept {
1111211113    uint64_t is_match =
1111311114        has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3);
1111411115    if (is_match) {
11115-       return i + index_of_first_set_byte(is_match);
11116+       return size_t( i + index_of_first_set_byte(is_match) );
1111611117    }
1111711118  }
1111811119
@@ -11126,7 +11127,7 @@ find_authority_delimiter(std::string_view view) noexcept {
1112611127    uint64_t is_match =
1112711128        has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3);
1112811129    if (is_match) {
11129-       return i + index_of_first_set_byte(is_match);
11130+       return size_t( i + index_of_first_set_byte(is_match) );
1113011131    }
1113111132  }
1113211133
@@ -12088,8 +12089,7 @@ result_type parse_url(std::string_view user_input,
1208812089
1208912090  // We refuse to parse URL strings that exceed 4GB. Such strings are almost
1209012091  // surely the result of a bug or are otherwise a security concern.
12091-   if (user_input.size() >=
12092-       std::string_view::size_type(std::numeric_limits<uint32_t>::max)) {
12092+   if (user_input.size() > std::numeric_limits<uint32_t>::max()) {
1209312093    url.is_valid = false;
1209412094  }
1209512095  // Going forward, user_input.size() is in [0,
@@ -13565,22 +13565,6 @@ ada_really_inline bool url_aggregator::parse_host(std::string_view input) {
1356513565    }
1356613566    ada_log("parse_host fast path ", get_hostname());
1356713567    return true;
13568-   } else if (is_forbidden_or_upper == 2) {
13569-     // We have encountered at least one upper case ASCII letter, let us
13570-     // try to convert it to lower case. If there is no 'xn-' in the result,
13571-     // we can then use a secondary fast path.
13572-     std::string _buffer = std::string(input);
13573-     unicode::to_lower_ascii(_buffer.data(), _buffer.size());
13574-     if (input.find("xn-") == std::string_view::npos) {
13575-       // secondary fast path when input is not all lower case
13576-       update_base_hostname(input);
13577-       if (checkers::is_ipv4(get_hostname())) {
13578-         ada_log("parse_host fast path ipv4");
13579-         return parse_ipv4(get_hostname());
13580-       }
13581-       ada_log("parse_host fast path ", get_hostname());
13582-       return true;
13583-     }
1358413568  }
1358513569  // We have encountered at least one forbidden code point or the input contains
1358613570  // 'xn-' (case insensitive), so we need to call 'to_ascii' to perform the full
0 commit comments