test/poly1305_internal_test.c:1588: error: BUFFER_OVERRUN_L2
  Offset: [1, 29] Size: 16 by call to `Poly1305_Final`.
Showing all 15 steps of the trace


test/poly1305_internal_test.c:1585:9: Call
1583.   
1584.       if (inlen > 16) {
1585.           Poly1305_Init(&poly1305, key);
                ^
1586.           Poly1305_Update(&poly1305, in, 1);
1587.           Poly1305_Update(&poly1305, in+1, inlen-1);

crypto/poly1305/poly1305.c:458:5: Assignment
  456.   #endif
  457.   
  458.       ctx->num = 0;
             ^
  459.   
  460.   }

test/poly1305_internal_test.c:1586:9: Call
1584.       if (inlen > 16) {
1585.           Poly1305_Init(&poly1305, key);
1586.           Poly1305_Update(&poly1305, in, 1);
                ^
1587.           Poly1305_Update(&poly1305, in+1, inlen-1);
1588.           Poly1305_Final(&poly1305, out);

crypto/poly1305/poly1305.c:471:1: Parameter `len`
  469.   #endif
  470.   
  471. > void Poly1305_Update(POLY1305 *ctx, const unsigned char *inp, size_t len)
  472.   {
  473.   #ifdef POLY1305_ASM

crypto/poly1305/poly1305.c:494:13: Assignment
  492.               /* Still not enough data to process a block. */
  493.               memcpy(ctx->data + num, inp, len);
  494.               ctx->num = num + len;
                     ^
  495.               return;
  496.           }

test/poly1305_internal_test.c:1587:9: Call
1585.           Poly1305_Init(&poly1305, key);
1586.           Poly1305_Update(&poly1305, in, 1);
1587.           Poly1305_Update(&poly1305, in+1, inlen-1);
                ^
1588.           Poly1305_Final(&poly1305, out);
1589.   

crypto/poly1305/poly1305.c:471:1: Parameter `len`
  469.   #endif
  470.   
  471. > void Poly1305_Update(POLY1305 *ctx, const unsigned char *inp, size_t len)
  472.   {
  473.   #ifdef POLY1305_ASM

crypto/poly1305/poly1305.c:494:13: Assignment
  492.               /* Still not enough data to process a block. */
  493.               memcpy(ctx->data + num, inp, len);
  494.               ctx->num = num + len;
                     ^
  495.               return;
  496.           }

test/poly1305_internal_test.c:1588:9: Call
1586.           Poly1305_Update(&poly1305, in, 1);
1587.           Poly1305_Update(&poly1305, in+1, inlen-1);
1588.           Poly1305_Final(&poly1305, out);
                ^
1589.   
1590.           if (memcmp(out, expected, expectedlen) != 0) {

crypto/poly1305/poly1305.c:513:1: <Offset trace>
511.   }
512.   
513. > void Poly1305_Final(POLY1305 *ctx, unsigned char mac[16])
514.   {
515.   #ifdef POLY1305_ASM

crypto/poly1305/poly1305.c:513:1: Parameter `ctx->num`
  511.   }
  512.   
  513. > void Poly1305_Final(POLY1305 *ctx, unsigned char mac[16])
  514.   {
  515.   #ifdef POLY1305_ASM

crypto/poly1305/poly1305.c:521:10: Assignment
  519.       size_t num;
  520.   
  521.       if ((num = ctx->num)) {
                  ^
  522.           ctx->data[num++] = 1;   /* pad bit */
  523.           while (num < POLY1305_BLOCK_SIZE)

crypto/poly1305/poly1305.c:513:1: <Length trace>
511.   }
512.   
513. > void Poly1305_Final(POLY1305 *ctx, unsigned char mac[16])
514.   {
515.   #ifdef POLY1305_ASM

crypto/poly1305/poly1305.c:513:1: Parameter `ctx->data[*]`
  511.   }
  512.   
  513. > void Poly1305_Final(POLY1305 *ctx, unsigned char mac[16])
  514.   {
  515.   #ifdef POLY1305_ASM

crypto/poly1305/poly1305.c:522:9: Array access: Offset: [1, 29] Size: 16 by call to `Poly1305_Final` 
  520.   
  521.       if ((num = ctx->num)) {
  522.           ctx->data[num++] = 1;   /* pad bit */
                 ^
  523.           while (num < POLY1305_BLOCK_SIZE)
  524.               ctx->data[num++] = 0;
