crypto/pem/pem_pkey.c:79: error: BUFFER_OVERRUN_L3
  Offset: [-12, +oo] Size: [1, 241] by call to `pem_check_suffix`.
Showing all 10 steps of the trace


crypto/pem/pem_pkey.c:35:10: Call
33.       EVP_PKEY *ret = NULL;
34.   
35.       if (!PEM_bytes_read_bio_secmem(&data, &len, &nm, PEM_STRING_EVP_PKEY, bp,
               ^
36.                                      cb, u))
37.           return NULL;

crypto/pem/pem_lib.c:285:12: Call
  283.                                 const char *name, BIO *bp, pem_password_cb *cb,
  284.                                 void *u) {
  285.       return pem_bytes_read_bio_flags(pdata, plen, pnm, name, bp, cb, u,
                    ^
  286.                                       PEM_FLAG_SECURE | PEM_FLAG_EAY_COMPATIBLE);
  287.   }

crypto/pem/pem_lib.c:247:14: Call
    245.           pem_free(header, flags, 0);
    246.           pem_free(data, flags, len);
    247.           if (!PEM_read_bio_ex(bp, &nm, &header, &data, &len, flags)) {
                        ^
    248.               if (ERR_GET_REASON(ERR_peek_error()) == PEM_R_NO_START_LINE)
    249.                   ERR_add_error_data(2, "Expecting: ", name);

crypto/pem/pem_lib.c:947:5: Assignment
      945.       }
      946.       BIO_read(headerB, *header, headerlen);
      947.       (*header)[headerlen] = '\0';
                 ^
      948.       BIO_read(dataB, *data, len);
      949.       *len_out = len;

crypto/pem/pem_pkey.c:79:24: Call
77.           }
78.           PKCS8_PRIV_KEY_INFO_free(p8inf);
79.       } else if ((slen = pem_check_suffix(nm, "PRIVATE KEY")) > 0) {
                             ^
80.           const EVP_PKEY_ASN1_METHOD *ameth;
81.           ameth = EVP_PKEY_asn1_find_str(NULL, nm, slen);

crypto/pem/pem_lib.c:974:1: <Length trace>
972.    */
973.   
974. > int pem_check_suffix(const char *pem_str, const char *suffix)
975.   {
976.       int pem_len = strlen(pem_str);

crypto/pem/pem_lib.c:974:1: Parameter `*pem_str`
  972.    */
  973.   
  974. > int pem_check_suffix(const char *pem_str, const char *suffix)
  975.   {
  976.       int pem_len = strlen(pem_str);

crypto/pem/pem_lib.c:981:5: Assignment
  979.       if (suffix_len + 1 >= pem_len)
  980.           return 0;
  981.       p = pem_str + pem_len - suffix_len;
             ^
  982.       if (strcmp(p, suffix))
  983.           return 0;

crypto/pem/pem_lib.c:984:5: Assignment
  982.       if (strcmp(p, suffix))
  983.           return 0;
  984.       p--;
             ^
  985.       if (*p != ' ')
  986.           return 0;

crypto/pem/pem_lib.c:985:9: Array access: Offset: [-12, +oo] Size: [1, 241] by call to `pem_check_suffix` 
  983.           return 0;
  984.       p--;
  985.       if (*p != ' ')
                 ^
  986.           return 0;
  987.       return p - pem_str;
