crypto/blake2/blake2s.c:92: error: BUFFER_OVERRUN_L2
  Offset added: [4, 32] (⇐ [0, 28] + 4) Size: 8 by call to `blake2s_init_param`.
Showing all 7 steps of the trace


crypto/blake2/blake2s.c:78:1: Array declaration
76.   
77.   /* Initialize the hashing context.  Always returns 1. */
78. > int BLAKE2s_Init(BLAKE2S_CTX *c)
79.   {
80.       BLAKE2S_PARAM P[1];

crypto/blake2/blake2s.c:92:5: Call
90.       memset(P->salt,     0, sizeof(P->salt));
91.       memset(P->personal, 0, sizeof(P->personal));
92.       blake2s_init_param(c, P);
          ^
93.       return 1;
94.   }

crypto/blake2/blake2s.c:72:10: Assignment
  70.       blake2s_init0(S);
  71.       /* IV XOR ParamBlock */
  72.       for (i = 0; i < 8; ++i) {
                 ^
  73.           S->h[i] ^= load32(&p[i*4]);
  74.       }

crypto/blake2/blake2s.c:73:20: Call
  71.       /* IV XOR ParamBlock */
  72.       for (i = 0; i < 8; ++i) {
  73.           S->h[i] ^= load32(&p[i*4]);
                           ^
  74.       }
  75.   }

crypto/blake2/blake2_impl.h:19:1: <Length trace>
17.   #include <string.h>
18.   
19. > static ossl_inline uint32_t load32(const uint8_t *src)
20.   {
21.       const union {

crypto/blake2/blake2_impl.h:19:1: Parameter `*src`
    17.   #include <string.h>
    18.   
    19. > static ossl_inline uint32_t load32(const uint8_t *src)
    20.   {
    21.       const union {

crypto/blake2/blake2_impl.h:28:9: Array access: Offset added: [4, 32] (⇐ [0, 28] + 4) Size: 8 by call to `blake2s_init_param` 
    26.       if (is_endian.little) {
    27.           uint32_t w;
    28.           memcpy(&w, src, sizeof(w));
                  ^
    29.           return w;
    30.       } else {

int BLAKE2s_Init(BLAKE2S_CTX *c)
{
    BLAKE2S_PARAM P[1];
    P->digest_length = BLAKE2S_DIGEST_LENGTH;
    P->key_length    = 0;
    P->fanout        = 1;
    P->depth         = 1;
    store32(P->leaf_length, 0);
    store48(P->node_offset, 0);
    P->node_depth    = 0;
    P->inner_length  = 0;
    memset(P->salt,     0, sizeof(P->salt));
    memset(P->personal, 0, sizeof(P->personal));
    blake2s_init_param(c, P);
    return 1;
}
['int BLAKE2s_Init(BLAKE2S_CTX *c)\n{\n    BLAKE2S_PARAM P[1];\n    P->digest_length = BLAKE2S_DIGEST_LENGTH;\n    P->key_length    = 0;\n    P->fanout        = 1;\n    P->depth         = 1;\n    store32(P->leaf_length, 0);\n    store48(P->node_offset, 0);\n    P->node_depth    = 0;\n    P->inner_length  = 0;\n    memset(P->salt,     0, sizeof(P->salt));\n    memset(P->personal, 0, sizeof(P->personal));\n    blake2s_init_param(c, P);\n    return 1;\n}', 'static void blake2s_init_param(BLAKE2S_CTX *S, const BLAKE2S_PARAM *P)\n{\n    const uint8_t *p = (const uint8_t *)(P);\n    size_t i;\n    assert(sizeof(BLAKE2S_PARAM) == 32);\n    blake2s_init0(S);\n    for (i = 0; i < 8; ++i) {\n        S->h[i] ^= load32(&p[i*4]);\n    }\n}']