This is an automated email from the ASF dual-hosted git repository. cmcfarlen pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit cb1c8f33a013a1c4673ddbb6a83840dd63d64ad9 Author: Leif Hedstrom <[email protected]> AuthorDate: Fri Sep 5 11:33:03 2025 -0600 Cripts: Obscure issue where rri->requestUrl may be nullptr (#12477) (cherry picked from commit 4537a5873bb253795272c115f11edf1627931bb0) --- include/cripts/Context.hpp | 6 ++++++ src/cripts/Urls.cc | 29 ++++++++++++++++++----------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/include/cripts/Context.hpp b/include/cripts/Context.hpp index be2af90c39..6a7a691681 100644 --- a/include/cripts/Context.hpp +++ b/include/cripts/Context.hpp @@ -65,6 +65,12 @@ public: TSRemapRequestInfo *rri = nullptr; // This may be nullptr, if not a remap cripts::Instance &p_instance; // p_ == public_, since we can't use "instance" + bool + rriValid() const + { + return rri && rri->requestBufp && rri->requestHdrp && rri->requestUrl; + } + // These are private, but needs to be visible to our friend classes that // depends on the Context. friend class Client::Request; diff --git a/src/cripts/Urls.cc b/src/cripts/Urls.cc index 94822baf62..fda6e8e838 100644 --- a/src/cripts/Urls.cc +++ b/src/cripts/Urls.cc @@ -466,11 +466,11 @@ Pristine::URL::_initialize() void Client::URL::_initialize() { - if (_context->rri) { + if (_context->rriValid()) { + super_type::_initialize(); _bufp = _context->rri->requestBufp; _hdr_loc = _context->rri->requestHdrp; _urlp = _context->rri->requestUrl; - super_type::_initialize(); } else { Client::Request &req = Client::Request::_get(_context); // Repurpose / create the shared request object @@ -505,10 +505,14 @@ Client::URL::_update() void Remap::From::URL::_initialize() { - super_type::_initialize(); - _bufp = _context->rri->requestBufp; - _hdr_loc = _context->rri->requestHdrp; - _urlp = _context->rri->mapFromUrl; + if (_context->rriValid()) { + super_type::_initialize(); + _bufp = _context->rri->requestBufp; + _hdr_loc = _context->rri->requestHdrp; + _urlp = _context->rri->mapFromUrl; + } else { + _context->state.error.Fail(); + } } Remap::From::URL & @@ -521,11 +525,14 @@ Remap::From::URL::_get(cripts::Context *context) void Remap::To::URL::_initialize() { - super_type::_initialize(); - - _bufp = _context->rri->requestBufp; - _hdr_loc = _context->rri->requestHdrp; - _urlp = _context->rri->mapToUrl; + if (_context->rriValid()) { + super_type::_initialize(); + _bufp = _context->rri->requestBufp; + _hdr_loc = _context->rri->requestHdrp; + _urlp = _context->rri->mapToUrl; + } else { + _context->state.error.Fail(); + } } Remap::To::URL &
