Browse Source

S3: fix TestSignedStreamingUploadInvalidSignature test (#7421)

* Added continue statements after all state transitions in the state machine to ensure immediate state processing

* simplify

* remove redundant continue clause

* ensure wrong signature
pull/7271/merge
Chris Lu 2 days ago
committed by GitHub
parent
commit
b7e3284fc5
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      weed/s3api/chunked_reader_v4.go
  2. 11
      weed/s3api/chunked_reader_v4_test.go

1
weed/s3api/chunked_reader_v4.go

@ -369,7 +369,6 @@ func (cr *s3ChunkedReader) Read(buf []byte) (n int, err error) {
// If we're at the end of a chunk.
if cr.n == 0 {
cr.state = readChunkTrailer
continue
}
case verifyChunk:
// Check if we have credentials for signature verification

11
weed/s3api/chunked_reader_v4_test.go

@ -285,7 +285,16 @@ func TestSignedStreamingUploadInvalidSignature(t *testing.T) {
// Build the chunked payload with INTENTIONALLY WRONG chunk signature
// We'll use a modified signature to simulate a tampered request
wrongChunkSignature := strings.Replace(chunk1Signature, "a", "b", 1)
wrongChunkSignatureBytes := []byte(chunk1Signature)
if len(wrongChunkSignatureBytes) > 0 {
// Flip the first hex character to guarantee a different signature
if wrongChunkSignatureBytes[0] == '0' {
wrongChunkSignatureBytes[0] = '1'
} else {
wrongChunkSignatureBytes[0] = '0'
}
}
wrongChunkSignature := string(wrongChunkSignatureBytes)
payload := fmt.Sprintf("400;chunk-signature=%s\r\n%s\r\n", wrongChunkSignature, chunk1Data) +
fmt.Sprintf("0;chunk-signature=%s\r\n\r\n", finalSignature)

Loading…
Cancel
Save