providers/common/ciphers/gcm_hw.c:230: error: BUFFER_OVERRUN_L3
  Offset added: 16 Size: [0, +oo] by call to `CRYPTO_gcm128_tag`.
Showing all 6 steps of the trace


providers/common/ciphers/gcm_hw.c:230:9: Call
228.   {
229.       if (ctx->enc) {
230.           CRYPTO_gcm128_tag(&ctx->gcm, tag, GCM_TAG_MAX_SIZE);
               ^
231.           ctx->taglen = GCM_TAG_MAX_SIZE;
232.       } else {

crypto/modes/gcm128.c:1872:12: <Offset trace>
1870.       CRYPTO_gcm128_finish(ctx, NULL, 0);
1871.       memcpy(tag, ctx->Xi.c,
1872.              len <= sizeof(ctx->Xi.c) ? len : sizeof(ctx->Xi.c));
                   ^
1873.   }
1874.   

crypto/modes/gcm128.c:1872:12: Assignment
  1870.       CRYPTO_gcm128_finish(ctx, NULL, 0);
  1871.       memcpy(tag, ctx->Xi.c,
  1872.              len <= sizeof(ctx->Xi.c) ? len : sizeof(ctx->Xi.c));
                     ^
  1873.   }
  1874.   

crypto/modes/gcm128.c:1868:1: <Length trace>
1866.   }
1867.   
1868. > void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len)
1869.   {
1870.       CRYPTO_gcm128_finish(ctx, NULL, 0);

crypto/modes/gcm128.c:1868:1: Parameter `ctx->Xi.c[*]`
  1866.   }
  1867.   
  1868. > void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len)
  1869.   {
  1870.       CRYPTO_gcm128_finish(ctx, NULL, 0);

crypto/modes/gcm128.c:1871:5: Array access: Offset added: 16 Size: [0, +oo] by call to `CRYPTO_gcm128_tag` 
  1869.   {
  1870.       CRYPTO_gcm128_finish(ctx, NULL, 0);
  1871.       memcpy(tag, ctx->Xi.c,
              ^
  1872.              len <= sizeof(ctx->Xi.c) ? len : sizeof(ctx->Xi.c));
  1873.   }

void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len)
{
    CRYPTO_gcm128_finish(ctx, NULL, 0);
    memcpy(tag, ctx->Xi.c,
           len <= sizeof(ctx->Xi.c) ? len : sizeof(ctx->Xi.c));
}
['static int gcm_cipher_final(PROV_GCM_CTX *ctx, unsigned char *tag)\n{\n    if (ctx->enc) {\n        CRYPTO_gcm128_tag(&ctx->gcm, tag, GCM_TAG_MAX_SIZE);\n        ctx->taglen = GCM_TAG_MAX_SIZE;\n    } else {\n        if (ctx->taglen < 0\n            || CRYPTO_gcm128_finish(&ctx->gcm, tag, ctx->taglen) != 0)\n            return 0;\n    }\n    return 1;\n}', 'void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len)\n{\n    CRYPTO_gcm128_finish(ctx, NULL, 0);\n    memcpy(tag, ctx->Xi.c,\n           len <= sizeof(ctx->Xi.c) ? len : sizeof(ctx->Xi.c));\n}']