Compute the delegated credentials length prefix with CBB. The length prefix is trivial in this case, but using CBB means we'll check if the length fits in a u16. Change-Id: I7deb2348fd7784e4f7d951f56dc176df3df9ef17 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/35785 Reviewed-by: Adam Langley <agl@google.com>
diff --git a/ssl/tls13_both.cc b/ssl/tls13_both.cc index ba5719f..bd0bb4f 100644 --- a/ssl/tls13_both.cc +++ b/ssl/tls13_both.cc
@@ -488,10 +488,10 @@ if (ssl_signing_with_dc(hs)) { const CRYPTO_BUFFER *raw = dc->raw.get(); + CBB child; if (!CBB_add_u16(&extensions, TLSEXT_TYPE_delegated_credential) || - !CBB_add_u16(&extensions, CRYPTO_BUFFER_len(raw)) || - !CBB_add_bytes(&extensions, - CRYPTO_BUFFER_data(raw), + !CBB_add_u16_length_prefixed(&extensions, &child) || + !CBB_add_bytes(&child, CRYPTO_BUFFER_data(raw), CRYPTO_BUFFER_len(raw)) || !CBB_flush(&extensions)) { OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);