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;
   }