588 Commits

Author SHA1 Message Date
Alan de Freitas 9d65427508 fix: normalize_path overflow shielding "//" path
fix #992
2026-05-13 12:52:28 -05:00
Alan de Freitas c628bd0665 fix: unsigned-integer-overflow in decode_view::decoded_strcmp loop 2026-05-13 08:54:22 -05:00
Alan de Freitas 5440c3f3c4 fix: uninitialized read in ipv6_address_rule when "." has no preceding h16
fix #993
2026-05-13 08:54:22 -05:00
Alan de Freitas 41b467a389 fix: decoded query-size tracking in url_base::edit_params
Latent issue exposed by b54e9e8, not introduced by it.

fix #989
2026-04-24 09:39:55 -05:00
Alan de Freitas f9633830fe fix: url_view memcpy with null source when size is zero 2026-04-23 20:59:59 -05:00
Alan de Freitas d42c74844b fix: string_view_base noexcept on throwing operator std::string() 2026-04-23 20:59:59 -05:00
Alan de Freitas b1f6f8e4fa fix: param noexcept on throwing constructor 2026-04-23 20:59:59 -05:00
Alan de Freitas 3ca2d715fe fix: segments_iter_impl decoded-length in decrement() 2026-04-23 20:59:59 -05:00
Alan de Freitas 2c6cdc6c60 fix: normalize_path ambiguity from dotdot cancellation
The existing ambiguity handling in normalize_path only checked the
path before running remove_dot_segments. It detected dot prefixes
("/./" or "./") hiding "//" and colons in the first segment, but
missed cases where ".." segments cancel regular segments and produce
ambiguity in the output:

- scheme:/a/..//evil -> scheme://evil (authority ambiguity)
- a/../b:c -> b:c (scheme ambiguity)
- a/..//evil -> /evil (relative path became absolute)

Fix by checking remove_dot_segments output for these conditions and
inserting a path shield or encoding colons as needed. Colon encoding
moved entirely to after dot removal, simplifying the pre-dot-removal
step to only handle shield preservation.

fix #985
2026-04-03 16:58:25 -05:00
Alan de Freitas 86b977fcef docs: error_types copy-paste deprecation messages 2026-03-02 19:44:17 -05:00
Alan de Freitas 8d98fe6530 fix: decode() noexcept on throwing template 2026-03-02 19:44:17 -05:00
Alan de Freitas 9c9850f188 fix: ci_equal arguments by const reference 2026-03-02 19:44:17 -05:00
Alan de Freitas 5bc52ed839 fix: port_rule has_number for port zero at end of input 2026-03-02 19:44:17 -05:00
Alan de Freitas b662a8f0c6 fix: encode() noexcept on throwing template 2026-03-02 19:44:17 -05:00
Alan de Freitas ab5d812c51 fix: encode_one signed char right-shift 2026-03-02 19:44:17 -05:00
Alan de Freitas fe4bdf692e fix: url move self-assignment 2026-03-02 19:44:17 -05:00
Alan de Freitas 88efbae208 fix: recycled_ptr copy self-assignment 2026-03-02 19:44:17 -05:00
Alan de Freitas d4ae92d51f fix: recycled_ptr::get() nullptr when empty 2026-03-02 19:44:17 -05:00
Alan de Freitas 76279f5344 fix: incorrect noexcept in segments_base::front() and back() 2026-03-02 19:44:17 -05:00
Alan de Freitas 42c8fe7eff fix: ci_less::operator() return type 2026-03-02 19:44:17 -05:00
Alan de Freitas bcdc891c8f fix: url_base loop condition order 2026-03-02 19:44:17 -05:00
Alan de Freitas ec15fce38c fix: encode() UB pointer arithmetic for small buffers 2026-03-02 19:44:17 -05:00
Alan de Freitas 59b4540d13 fix: suppress GCC false-positive -Wmaybe-uninitialized in tuple_rule
GCC 7+ at -O3 emits false -Wmaybe-uninitialized from
variant2 union storage when deeply inlining constexpr
functions. Wrap the affected parse_sequence code in
tuple_rule.hpp with a diagnostic pragma.

fix #979
2026-02-25 15:48:59 -05:00
Alan de Freitas a87998a119 fix(params): correct decoded_size in params_iter_impl::decrement() for values containing '='
fix #972
2026-02-20 18:41:29 -05:00
Alan de Freitas 60c281a7a2 fix: assert size in remove_prefix/suffix
fix #973
2026-02-20 18:41:29 -05:00
Alan de Freitas 062fe009bf feat: constexpr URL parsing for C++20
fix #890
2026-02-19 21:42:24 -05:00
Alan de Freitas 6d396a4831 docs: format examples show full URL
fix #971
2026-02-19 21:42:24 -05:00
Alan de Freitas b54e9e8697 perf: store url_impl offsets as 32-bit
fix #913
2026-01-28 14:15:06 -05:00
Alan de Freitas 689530386c docs: align README/Antora examples
fix #967
2026-01-27 11:56:01 -05:00
Alan de Freitas 14fb347896 feat(ranges): specialize enable_borrowed_range for view types
All view types in Boost.URL have iterators that store raw pointers
to external data rather than references to the view object itself.
This means iterators remain valid even after the view is destroyed,
satisfying the borrowed_range requirements.

Specializations added for:
- decode_view, pct_string_view
- params_view, params_ref, params_encoded_view, params_encoded_ref
- segments_view, segments_ref, segments_encoded_view, segments_encoded_ref

fix #927
2026-01-26 12:01:22 -05:00
Alan de Freitas 4c6d357f7a docs: add examples to normalization functions
fix #929
2026-01-23 15:59:12 -05:00
Alan de Freitas f4a80080b1 feat(grammar): EBO and default construction to token_rule_t
fix #936
2026-01-22 22:54:30 -05:00
Alan de Freitas aef0b8bbba fix: ensure decode_view is complete for pct_string_view::operator*()
fix #937
2026-01-22 16:56:19 -05:00
Alan de Freitas 13f0110da6 fix(natvis): add visualizers for segments
Validated against the official [natvis.xsd](https://github.com/microsoft/MIEngine/blob/main/src/MIDebugEngine/Natvis.Impl/natvis.xsd) schema using xmllint. CustomListItems is not supported for individual segments.

fix #942
2026-01-22 11:53:25 -05:00
Alan de Freitas e618e69fc4 docs: avoid shadow warnings while improving param_view docs
fix #957
2026-01-20 12:00:47 -05:00
Alan de Freitas 176cea8a29 feat: grammar::range user-provided RangeRule
#943
2026-01-19 20:35:32 -05:00
Alan de Freitas 142fe37745 feat: decode free functions
fix #947
2026-01-19 16:00:56 -05:00
Alan de Freitas dc14702786 feat: get_or for query containers
fix #945
2026-01-19 13:59:56 -05:00
Alan de Freitas 1e010e5ba1 perf: constructing segments subviews has a constant cost 2025-11-04 19:07:09 -05:00
Alan de Freitas 0d082014f5 refactor: preserve absolute semantics for segment subviews
fix #939
2025-11-04 18:12:26 -05:00
Vinnie Falco 7e60e85fe7 static assert is in detail 2025-10-23 21:53:22 -07:00
Alan de Freitas 0b7fd495a4 feat: segments_view iterator constructors 2025-10-22 11:05:46 -05:00
Alan de Freitas 83d8166d50 refactor: replace BOOST_STATIC_ASSERT with BOOST_CORE_STATIC_ASSERT
fix #934
2025-10-22 11:05:46 -05:00
Vinnie Falco e1c9031361 chore: op<< is dll exported 2025-10-19 20:14:58 -07:00
ivanpanch 669123178b docs: exposition typos 2025-09-01 20:33:16 -05:00
Alan de Freitas b1f1418b2e feat: zone_id setters 2025-08-29 12:01:50 -05:00
Alan de Freitas e9bec4c8d1 docs: functions that cannot round-trip
fix #921
2025-08-26 17:44:59 -05:00
Alan de Freitas 82a74dd7e7 docs: fix encoded_size ref 2025-08-05 21:09:23 -05:00
Mohammad Nejati 8fa6c87637 docs: static_url copy constructor is noexcept 2025-05-21 19:19:01 -05:00
Alan de Freitas 2e72afd0e6 docs: no Doxygen documentation variant
This commit removes comments in the Doxygen documentation format from source files. This documentation format was there in a transition stage where we supported both Doxygen and MrDocs.

We only leave documentation in the MrDocs format now. This means the `BOOST_URL_DOCS` macro is no longer necessary: symbols are documented where they are defined instead of fake implementation defined symbols.
2025-05-19 16:28:34 -05:00