fix(actions): drop untrusted Content-Encoding from v1 artifact uploads (#39855)

Legacy (v1 to v3) artifact uploads stored the request's
`Content-Encoding` header in the column that v4 artifacts read as their
`Content-Type`.

- Store only the `gzip` marker on legacy uploads, the only encoding
their clients send
- Pick the PDF and audio/video serve headers only for content types that
`mime.ParseMediaType` accepts

---------

Co-authored-by: silverwind <me@silverwind.io>
This commit is contained in:
Basavaraj S mandsilverwind authored and GitHub committed 2026-10-24 11:48:07 +00:00
1 parent 497e169398
commit 4f744d15be
4 files changed
+14 -8

No files matched your search

@@ -210,9 +210,11 @@ func TestActionsArtifactUploadSingleFile(t *testing.T) {
req = NewRequestWithBody(t, "PUT", url, strings.NewReader(body)).
AddTokenAuth("8061e833a55f6fc0157c98b883e91fcfeeb1a71a").
SetHeader("Content-Range", "bytes 0-1023/1024").
SetHeader("Content-Encoding", "video/mp4,text/html").
SetHeader("x-tfs-filelength", "1024").
SetHeader("x-actions-results-md5", "XVlf820rMInUi64wmMi6EA==") // base64(md5(body))
MakeRequest(t, req, http.StatusOK)
assert.Empty(t, unittest.AssertExistsAndLoadBean(t, &actions_model.ActionArtifact{RunID: 791, ArtifactName: "artifact", ArtifactPath: "abc-2.txt"}).ContentEncodingOrType)
t.Logf("Create artifact confirm")