mini_trunks: add size checks to HmacKeyAppend BUG=b:197007454 TEST=fuzzer + pinweaver_client selftest Change-Id: I7c4e5c377d1f5c0092ab8f5dcad3a3b3012f3252 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/pinweaver/+/3101711 Tested-by: Andrey Pronin <apronin@chromium.org> Auto-Submit: Andrey Pronin <apronin@chromium.org> Commit-Queue: Yi Chou <yich@google.com> Reviewed-by: Yi Chou <yich@google.com>
diff --git a/eal/tpm_storage/mini_trunks/hmac_authorization_delegate.c b/eal/tpm_storage/mini_trunks/hmac_authorization_delegate.c index d2fa72d..ac71c9a 100644 --- a/eal/tpm_storage/mini_trunks/hmac_authorization_delegate.c +++ b/eal/tpm_storage/mini_trunks/hmac_authorization_delegate.c
@@ -64,7 +64,11 @@ } static int HmacKeyAppend(HMAC_KEY* key, const TPM2B_DIGEST* data) { - if (pinweaver_eal_memcpy_s(key->buffer + key->size, sizeof(key->buffer), + if (key->size + data->size > sizeof(key->buffer)) { + return -1; + } + if (pinweaver_eal_memcpy_s(key->buffer + key->size, + sizeof(key->buffer) - key->size, data->buffer, data->size)) { return -1; }