This is an automated email from the ASF dual-hosted git repository.
zwoop pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new 4537a5873b Cripts: Obscure issue where rri->requestUrl may be nullptr
(#12477)
4537a5873b is described below
commit 4537a5873bb253795272c115f11edf1627931bb0
Author: Leif Hedstrom <[email protected]>
AuthorDate: Fri Sep 5 11:33:03 2025 -0600
Cripts: Obscure issue where rri->requestUrl may be nullptr (#12477)
---
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 4e00a26163..00bc36eafc 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 324976fba1..57abcb5ad9 100644
--- a/src/cripts/Urls.cc
+++ b/src/cripts/Urls.cc
@@ -467,11 +467,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
@@ -506,10 +506,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 &
@@ -522,11 +526,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 &