Fixed chunked decoding in case of errors (if decoding failed at some point, subsequen... master
authorThomas Pornin <thomas.pornin@nccgroup.com>
Sat, 4 Apr 2026 15:18:55 +0000 (11:18 -0400)
committerThomas Pornin <thomas.pornin@nccgroup.com>
Sat, 4 Apr 2026 15:18:55 +0000 (11:18 -0400)
Bug was reported by Thai Duong at Calif.io (apparently using some AI from Anthropic Research).

src/x509/skey_decoder.c
src/x509/skey_decoder.t0
src/x509/x509_decoder.c
src/x509/x509_decoder.t0

index 9e285d7..9fe22bd 100644 (file)
@@ -94,6 +94,9 @@ void
 br_skey_decoder_push(br_skey_decoder_context *ctx,
        const void *data, size_t len)
 {
+       if (ctx->err != 0) {
+               return;
+       }
        ctx->hbuf = data;
        ctx->hlen = len;
        br_skey_decoder_run(&ctx->cpu);
index f00e614..76b415a 100644 (file)
@@ -43,6 +43,9 @@ void
 br_skey_decoder_push(br_skey_decoder_context *ctx,
        const void *data, size_t len)
 {
+       if (ctx->err != 0) {
+               return;
+       }
        ctx->hbuf = data;
        ctx->hlen = len;
        br_skey_decoder_run(&ctx->cpu);
index 8dd970f..d87e576 100644 (file)
@@ -103,6 +103,9 @@ void
 br_x509_decoder_push(br_x509_decoder_context *ctx,
        const void *data, size_t len)
 {
+       if (ctx->err != 0) {
+               return;
+       }
        ctx->hbuf = data;
        ctx->hlen = len;
        br_x509_decoder_run(&ctx->cpu);
index 0bf276f..036f501 100644 (file)
@@ -52,6 +52,9 @@ void
 br_x509_decoder_push(br_x509_decoder_context *ctx,
        const void *data, size_t len)
 {
+       if (ctx->err != 0) {
+               return;
+       }
        ctx->hbuf = data;
        ctx->hlen = len;
        br_x509_decoder_run(&ctx->cpu);