From 07956c9ad6a8f7a22db4f717801de85397291bb6 Mon Sep 17 00:00:00 2001 From: Alex Eyers-Taylor Date: Wed, 12 Feb 2025 18:16:15 +0000 Subject: [PATCH] Ruby: Avoid a forced CP that confused the join orderer. --- .../codeql/ruby/frameworks/http_clients/NetHttp.qll | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ruby/ql/lib/codeql/ruby/frameworks/http_clients/NetHttp.qll b/ruby/ql/lib/codeql/ruby/frameworks/http_clients/NetHttp.qll index e09917ae21ab..549ae65bcc09 100644 --- a/ruby/ql/lib/codeql/ruby/frameworks/http_clients/NetHttp.qll +++ b/ruby/ql/lib/codeql/ruby/frameworks/http_clients/NetHttp.qll @@ -54,7 +54,15 @@ class NetHttpRequest extends Http::Client::Request::Range, DataFlow::CallNode { override DataFlow::Node getAUrlPart() { result = request.getArgument(0) or - // Net::HTTP.new(...).get(...) + result = this.getAUrlPartHelper() + } + + /** + * Helper predicate for `getAUrlPart`. + * + * This handles `Net::HTTP.new(...).get(...)` etc. + */ + private DataFlow::Node getAUrlPartHelper() { exists(API::Node new | new = API::getTopLevelMember("Net").getMember("HTTP").getInstance() and requestNode = new.getReturn(_)