crypto/ts/ts_rsp_sign.c:974: error: BUFFER_OVERRUN_L3
  Offset: [-1, +oo] (⇐ [-1, 2147483647] + [0, +oo]) Size: 23 by call to `BIO_snprintf`.
Showing all 15 steps of the trace


crypto/ts/ts_rsp_sign.c:945:1: Array declaration
943.   }
944.   
945. > static ASN1_GENERALIZEDTIME
946.   *TS_RESP_set_genTime_with_precision(ASN1_GENERALIZEDTIME *asn1_time,
947.                                       long sec, long usec, unsigned precision)

crypto/ts/ts_rsp_sign.c:952:5: Assignment
950.       struct tm *tm = NULL;
951.       char genTime_str[17 + TS_MAX_CLOCK_PRECISION_DIGITS];
952.       char *p = genTime_str;
           ^
953.       char *p_end = genTime_str + sizeof(genTime_str);
954.   

crypto/ts/ts_rsp_sign.c:968:5: Assignment
966.        * fraction-of-second details".
967.        */
968.       p += BIO_snprintf(p, p_end - p,
           ^
969.                         "%04d%02d%02d%02d%02d%02d",
970.                         tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,

crypto/ts/ts_rsp_sign.c:974:9: Call
972.       if (precision > 0) {
973.           /* Add fraction of seconds (leave space for dot and null). */
974.           BIO_snprintf(p, 2 + precision, ".%06ld", usec);
               ^
975.           /*
976.            * We cannot use the snprintf return value, because it might have

crypto/bio/b_print.c:786:1: Parameter `*buf`
  784.    * function should be renamed, but to what?)
  785.    */
  786. > int BIO_snprintf(char *buf, size_t n, const char *format, ...)
  787.   {
  788.       va_list args;

crypto/bio/b_print.c:793:11: Call
  791.       va_start(args, format);
  792.   
  793.       ret = BIO_vsnprintf(buf, n, format, args);
                   ^
  794.   
  795.       va_end(args);

crypto/bio/b_print.c:799:1: Parameter `*buf`
    797.   }
    798.   
    799. > int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
    800.   {
    801.       size_t retlen;

crypto/bio/b_print.c:804:5: Call
    802.       int truncated;
    803.   
    804.       _dopr(&buf, NULL, &n, &retlen, &truncated, format, args);
               ^
    805.   
    806.       if (truncated)

crypto/bio/b_print.c:168:1: Parameter `*maxlen`
      166.   #define OSSL_MAX(p,q) ((p >= q) ? p : q)
      167.   
      168. > static void
      169.   _dopr(char **sbuffer,
      170.         char **buffer,

crypto/bio/b_print.c:199:17: Call
      197.                   state = DP_S_FLAGS;
      198.               else
      199.                   doapr_outch(sbuffer, buffer, &currlen, maxlen, ch);
                             ^
      200.               ch = *format++;
      201.               break;

crypto/bio/b_print.c:703:1: <Offset trace>
701.   }
702.   
703. > static void
704.   doapr_outch(char **sbuffer,
705.               char **buffer, size_t *currlen, size_t *maxlen, int c)

crypto/bio/b_print.c:703:1: Parameter `*maxlen`
        701.   }
        702.   
        703. > static void
        704.   doapr_outch(char **sbuffer,
        705.               char **buffer, size_t *currlen, size_t *maxlen, int c)

crypto/bio/b_print.c:703:1: <Length trace>
701.   }
702.   
703. > static void
704.   doapr_outch(char **sbuffer,
705.               char **buffer, size_t *currlen, size_t *maxlen, int c)

crypto/bio/b_print.c:703:1: Parameter `**sbuffer`
        701.   }
        702.   
        703. > static void
        704.   doapr_outch(char **sbuffer,
        705.               char **buffer, size_t *currlen, size_t *maxlen, int c)

crypto/bio/b_print.c:732:13: Array access: Offset: [-1, +oo] (⇐ [-1, 2147483647] + [0, +oo]) Size: 23 by call to `BIO_snprintf` 
        730.       if (*currlen < *maxlen) {
        731.           if (*sbuffer)
        732.               (*sbuffer)[(*currlen)++] = (char)c;
                           ^
        733.           else
        734.               (*buffer)[(*currlen)++] = (char)c;
