diff --git a/ql/src/semmle/go/concepts/HTTP.qll b/ql/src/semmle/go/concepts/HTTP.qll index 450ed88997a..3a5b9b8ff8b 100644 --- a/ql/src/semmle/go/concepts/HTTP.qll +++ b/ql/src/semmle/go/concepts/HTTP.qll @@ -64,10 +64,17 @@ module HTTP { /** Gets the (lower-case) name of a header set by this definition. */ string getHeaderName() { result = this.getName().getStringValue().toLowerCase() } + /** Gets the value of the header set by this definition. */ + string getHeaderValue() { + result = this.getValue().getStringValue() + or + result = this.getValue().getIntValue().toString() + } + /** Holds if this header write defines the header `header`. */ predicate definesHeader(string header, string value) { header = this.getHeaderName() and - value = this.getValue().getStringValue() + value = this.getHeaderValue() } /** @@ -101,6 +108,9 @@ module HTTP { /** Gets the (lower-case) name of a header set by this definition. */ string getHeaderName() { result = self.getHeaderName() } + /** Gets the value of the header set by this definition. */ + string getHeaderValue() { result = self.getHeaderValue() } + /** Holds if this header write defines the header `header`. */ predicate definesHeader(string header, string value) { self.definesHeader(header, value) } diff --git a/ql/src/semmle/go/frameworks/stdlib/NetHttp.qll b/ql/src/semmle/go/frameworks/stdlib/NetHttp.qll index 5620dc8c84f..b4a57f03734 100644 --- a/ql/src/semmle/go/frameworks/stdlib/NetHttp.qll +++ b/ql/src/semmle/go/frameworks/stdlib/NetHttp.qll @@ -108,9 +108,7 @@ module NetHttp { override string getHeaderName() { result = "status" } - override predicate definesHeader(string header, string value) { - header = "status" and value = this.getValue().getIntValue().toString() - } + override string getHeaderValue() { result = this.getValue().getIntValue().toString() } override DataFlow::Node getName() { none() } diff --git a/ql/test/library-tests/semmle/go/concepts/HTTP/main.go b/ql/test/library-tests/semmle/go/concepts/HTTP/main.go index a3c4e9a7a0e..7abf0a170c0 100644 --- a/ql/test/library-tests/semmle/go/concepts/HTTP/main.go +++ b/ql/test/library-tests/semmle/go/concepts/HTTP/main.go @@ -3,9 +3,9 @@ package main import ( "bytes" "fmt" + "html" "io" "io/ioutil" - "net/html" "net/http" )