Merge pull request #3023 from shadowsocks/fix/aead-decrypt-chunk-compaction

Fix unbounded buffer growth in aead_decrypt chunk reassembly
This commit is contained in:
Max Lv
2026-02-09 09:12:12 +08:00
committed by GitHub
+6 -3
View File
@@ -650,9 +650,12 @@ aead_decrypt(buffer_t *ciphertext, cipher_ctx_t *cipher_ctx, size_t capacity)
chunk->idx = 0;
ciphertext->len = 0;
} else {
brealloc(chunk,
chunk->idx + chunk->len + ciphertext->len, capacity);
memcpy(chunk->data + chunk->idx + chunk->len,
if (chunk->idx > 0) {
memmove(chunk->data, chunk->data + chunk->idx, chunk->len);
chunk->idx = 0;
}
brealloc(chunk, chunk->len + ciphertext->len, capacity);
memcpy(chunk->data + chunk->len,
ciphertext->data, ciphertext->len);
chunk->len += ciphertext->len;
}