From b0ddf4b68b3274b2e79c120001b1827eeccb8a17 Mon Sep 17 00:00:00 2001 From: Sauyon Lee Date: Tue, 15 Dec 2020 11:03:12 -0800 Subject: [PATCH] Add model for net/http.Error --- ql/src/semmle/go/frameworks/stdlib/NetHttp.qll | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ql/src/semmle/go/frameworks/stdlib/NetHttp.qll b/ql/src/semmle/go/frameworks/stdlib/NetHttp.qll index b4a57f03734..575267c0f88 100644 --- a/ql/src/semmle/go/frameworks/stdlib/NetHttp.qll +++ b/ql/src/semmle/go/frameworks/stdlib/NetHttp.qll @@ -108,8 +108,6 @@ module NetHttp { override string getHeaderName() { result = "status" } - override string getHeaderValue() { result = this.getValue().getIntValue().toString() } - override DataFlow::Node getName() { none() } override DataFlow::Node getValue() { result = this.getArgument(0) } @@ -117,6 +115,18 @@ module NetHttp { override HTTP::ResponseWriter getResponseWriter() { result.getANode() = this.getReceiver() } } + private class ResponseErrorCall extends HTTP::HeaderWrite::Range, DataFlow::CallNode { + ResponseErrorCall() { this.getTarget().hasQualifiedName("net/http", "Error") } + + override string getHeaderName() { result = "status" } + + override DataFlow::Node getName() { none() } + + override DataFlow::Node getValue() { result = this.getArgument(2) } + + override HTTP::ResponseWriter getResponseWriter() { result.getANode() = this.getArgument(0) } + } + private class RequestBody extends HTTP::RequestBody::Range, DataFlow::ExprNode { RequestBody() { exists(Function newRequest |