]> git.ipfire.org Git - thirdparty/suricata-verify.git/commitdiff
Adds test about http2 deflate decompression
authorPhilippe Antoine <contact@catenacyber.fr>
Mon, 5 Jul 2021 08:59:27 +0000 (10:59 +0200)
committerVictor Julien <victor@inliniac.net>
Fri, 3 Sep 2021 10:46:59 +0000 (12:46 +0200)
tests/http2-deflate/README.md [new file with mode: 0644]
tests/http2-deflate/http2_deflate.pcap [new file with mode: 0644]
tests/http2-deflate/server.go [new file with mode: 0644]
tests/http2-deflate/test.yaml [new file with mode: 0644]

diff --git a/tests/http2-deflate/README.md b/tests/http2-deflate/README.md
new file mode 100644 (file)
index 0000000..a053e45
--- /dev/null
@@ -0,0 +1,8 @@
+# Description
+
+Test http2 deflate decompression
+
+# PCAP
+
+The pcap comes from running dummy HTTP2 server with `go run server.go`
+and client `curl -H 'Accept-Encoding: deflate' --http2 127.0.0.1:8080/`
diff --git a/tests/http2-deflate/http2_deflate.pcap b/tests/http2-deflate/http2_deflate.pcap
new file mode 100644 (file)
index 0000000..f765f6d
Binary files /dev/null and b/tests/http2-deflate/http2_deflate.pcap differ
diff --git a/tests/http2-deflate/server.go b/tests/http2-deflate/server.go
new file mode 100644 (file)
index 0000000..b409b82
--- /dev/null
@@ -0,0 +1,33 @@
+package main
+
+import (
+       "compress/flate"
+       "fmt"
+       "golang.org/x/net/http2"
+       "golang.org/x/net/http2/h2c"
+       "net/http"
+)
+
+func main() {
+       h2s := &http2.Server{}
+
+       handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+               h := w.Header()
+               h["content-encoding"] = []string{"deflate"}
+               fw, err := flate.NewWriter(w, 1)
+               if err != nil {
+                       fmt.Fprintf(w, "FAIL %s, %v, http: %v", err, r.URL.Path, r.TLS == nil)
+               }
+               fmt.Fprintf(fw, "Hello, %v, http: %v", r.URL.Path, r.TLS == nil)
+               fw.Flush()
+       })
+
+       server := &http.Server{
+               Addr:    "0.0.0.0:8080",
+               Handler: h2c.NewHandler(handler, h2s),
+       }
+
+       fmt.Printf("Listening [0.0.0.0:8080]...\n")
+       err := server.ListenAndServe()
+       fmt.Printf("lol %s", err)
+}
diff --git a/tests/http2-deflate/test.yaml b/tests/http2-deflate/test.yaml
new file mode 100644 (file)
index 0000000..b7895b7
--- /dev/null
@@ -0,0 +1,22 @@
+requires:
+  features:
+    - HAVE_LIBJANSSON
+  min-version: 6.0.0
+
+# disables checksum verification
+args:
+  - -k none --set app-layer.protocols.http2.enabled=true
+
+checks:
+
+  # Check that there is one file event with decompressed length.
+  - filter:
+      count: 1
+      match:
+        event_type: fileinfo
+        http2.length: 30
+        fileinfo.size: 20
+  - filter:
+      count: 0
+      match:
+        event_type: anomaly