mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-29 08:11:13 +00:00
LibWeb: Make HTTP response directive parsing more robust
This commit is contained in:
parent
3b40667413
commit
47169db452
Notes:
sideshowbarker
2024-07-17 04:32:07 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/LadybirdBrowser/ladybird/commit/47169db452 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/248
|
@ -278,9 +278,18 @@ u64 Response::freshness_lifetime() const
|
|||
// If the max-age response directive (Section 5.2.2.1) is present, use its value, or
|
||||
for (auto const& directive : *elem) {
|
||||
if (directive.starts_with_bytes("max-age"sv)) {
|
||||
auto equal_offset = directive.find_byte_offset('=').value();
|
||||
auto const value = directive.bytes_as_string_view().substring_view(equal_offset);
|
||||
return value.to_number<u64>().value();
|
||||
auto equal_offset = directive.find_byte_offset('=');
|
||||
if (!equal_offset.has_value()) {
|
||||
dbgln("Bogus directive: '{}'", directive);
|
||||
continue;
|
||||
}
|
||||
auto const value_string = directive.bytes_as_string_view().substring_view(equal_offset.value() + 1);
|
||||
auto maybe_value = value_string.to_number<u64>();
|
||||
if (!maybe_value.has_value()) {
|
||||
dbgln("Bogus directive: '{}'", directive);
|
||||
continue;
|
||||
}
|
||||
return maybe_value.value();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -299,9 +308,18 @@ u64 Response::stale_while_revalidate_lifetime() const
|
|||
|
||||
for (auto const& directive : *elem) {
|
||||
if (directive.starts_with_bytes("stale-while-revalidate"sv)) {
|
||||
auto equal_offset = directive.find_byte_offset('=').value();
|
||||
auto const value = directive.bytes_as_string_view().substring_view(equal_offset);
|
||||
return value.to_number<u64>().value();
|
||||
auto equal_offset = directive.find_byte_offset('=');
|
||||
if (!equal_offset.has_value()) {
|
||||
dbgln("Bogus directive: '{}'", directive);
|
||||
continue;
|
||||
}
|
||||
auto const value_string = directive.bytes_as_string_view().substring_view(equal_offset.value() + 1);
|
||||
auto maybe_value = value_string.to_number<u64>();
|
||||
if (!maybe_value.has_value()) {
|
||||
dbgln("Bogus directive: '{}'", directive);
|
||||
continue;
|
||||
}
|
||||
return maybe_value.value();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue