Merge pull request #21979 from chilikk/fix-exec-headers

fix invalid HTTP header values when hijacking a connection
This commit is contained in:
openshift-merge-bot[bot] 2024-03-14 19:38:46 +00:00 committed by GitHub
commit f5abca415d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 10 additions and 1 deletions

View File

@ -217,7 +217,7 @@ func writeHijackHeader(r *http.Request, conn io.Writer, tty bool) {
// Upgraded // Upgraded
fmt.Fprintf(conn, fmt.Fprintf(conn,
"HTTP/1.1 101 UPGRADED\r\nContent-Type: %s\r\nConnection: Upgrade\r\nUpgrade: %s\r\n\r\n", "HTTP/1.1 101 UPGRADED\r\nContent-Type: %s\r\nConnection: Upgrade\r\nUpgrade: %s\r\n\r\n",
proto, header) header, proto)
} }
} }

View File

@ -45,6 +45,11 @@ t POST "/v4.7.0/libpod/containers/foo/attach?logs=true&stream=false" 200
response_headers=$(cat "$WORKDIR/curl.headers.out") response_headers=$(cat "$WORKDIR/curl.headers.out")
like "$response_headers" ".*Content-Type: application/vnd\.docker\.multiplexed-stream.*" "vnd.docker.multiplexed-stream libpod v4.7.0" like "$response_headers" ".*Content-Type: application/vnd\.docker\.multiplexed-stream.*" "vnd.docker.multiplexed-stream libpod v4.7.0"
t POST "containers/foo/attach?logs=true&stream=false" 101
response_headers=$(cat "$WORKDIR/curl.headers.out")
like "$response_headers" ".*Content-Type: application/vnd\.docker\.raw-stream.*" "hijacked connection header: Content-type: application/vnd.docker.raw-stream"
like "$response_headers" ".*Upgrade: tcp.*" "hijacked connection header: Upgrade: tcp"
t POST "containers/foo/kill" 204 t POST "containers/foo/kill" 204
podman run --replace --name=foo -v /tmp:/tmp $IMAGE true podman run --replace --name=foo -v /tmp:/tmp $IMAGE true

View File

@ -322,6 +322,10 @@ function t() {
local expected_code=$1; shift local expected_code=$1; shift
if [[ "$expected_code" == "101" ]]; then
curl_args+=("-H" "Connection: upgrade" "-H" "Upgrade: tcp")
fi
# Log every action we do # Log every action we do
echo "-------------------------------------------------------------" >>$LOG echo "-------------------------------------------------------------" >>$LOG
echo "\$ $testname" >>$LOG echo "\$ $testname" >>$LOG