crypto/pem/pem_pkey.c:42: error: BUFFER_OVERRUN_L3
  Offset: [2, +oo] Size: [1, +oo] by call to `d2i_PKCS8_PRIV_KEY_INFO`.
Showing all 27 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:282:1: Parameter `**pdata`
  280.   }
  281.   
  282. > int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm,
  283.                                 const char *name, BIO *bp, pem_password_cb *cb,
  284.                                 void *u) {

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:232:1: Parameter `**pdata`
    230.   }
    231.   
    232. > static int pem_bytes_read_bio_flags(unsigned char **pdata, long *plen,
    233.                                       char **pnm, const char *name, BIO *bp,
    234.                                       pem_password_cb *cb, void *u,

crypto/pem/pem_pkey.c:38:5: Assignment
36.                                      cb, u))
37.           return NULL;
38.       p = data;
          ^
39.   
40.       if (strcmp(nm, PEM_STRING_PKCS8INF) == 0) {

crypto/pem/pem_pkey.c:42:17: Call
40.       if (strcmp(nm, PEM_STRING_PKCS8INF) == 0) {
41.           PKCS8_PRIV_KEY_INFO *p8inf;
42.           p8inf = d2i_PKCS8_PRIV_KEY_INFO(NULL, &p, len);
                      ^
43.           if (!p8inf)
44.               goto p8err;

crypto/asn1/p8_pkey.c:36:1: Parameter `**in`
  34.   } ASN1_SEQUENCE_END_cb(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO)
  35.   
  36. > IMPLEMENT_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO)
  37.   
  38.   int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,

crypto/asn1/p8_pkey.c:36:1: Call
  34.   } ASN1_SEQUENCE_END_cb(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO)
  35.   
  36. > IMPLEMENT_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO)
  37.   
  38.   int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,

crypto/asn1/tasn_dec.c:105:1: Parameter `**in`
    103.    */
    104.   
    105. > ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **pval,
    106.                             const unsigned char **in, long len,
    107.                             const ASN1_ITEM *it)

crypto/asn1/tasn_dec.c:114:9: Call
    112.           pval = &ptmpval;
    113.       asn1_tlc_clear_nc(&c);
    114.       if (ASN1_item_ex_d2i(pval, in, len, it, -1, 0, 0, &c) > 0)
                   ^
    115.           return *pval;
    116.       return NULL;

crypto/asn1/tasn_dec.c:119:1: Parameter `**in`
      117.   }
      118.   
      119. > int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
      120.                        const ASN1_ITEM *it,
      121.                        int tag, int aclass, char opt, ASN1_TLC *ctx)

crypto/asn1/tasn_dec.c:124:10: Call
      122.   {
      123.       int rv;
      124.       rv = asn1_item_embed_d2i(pval, in, len, it, tag, aclass, opt, ctx, 0);
                      ^
      125.       if (rv <= 0)
      126.           ASN1_item_ex_free(pval, it);

crypto/asn1/tasn_dec.c:135:1: Parameter `**in`
        133.    */
        134.   
        135. > static int asn1_item_embed_d2i(ASN1_VALUE **pval, const unsigned char **in,
        136.                                  long len, const ASN1_ITEM *it,
        137.                                  int tag, int aclass, char opt, ASN1_TLC *ctx,

crypto/asn1/tasn_dec.c:185:9: Assignment
        183.   
        184.       case ASN1_ITYPE_MSTRING:
        185.           p = *in;
                       ^
        186.           /* Just read in tag and class */
        187.           ret = asn1_check_tlen(NULL, &otag, &oclass, NULL, NULL,

crypto/asn1/tasn_dec.c:187:15: Call
        185.           p = *in;
        186.           /* Just read in tag and class */
        187.           ret = asn1_check_tlen(NULL, &otag, &oclass, NULL, NULL,
                             ^
        188.                                 &p, len, -1, 0, 1, ctx);
        189.           if (!ret) {

crypto/asn1/tasn_dec.c:1078:1: Parameter `**in`
          1076.    */
          1077.   
          1078. > static int asn1_check_tlen(long *olen, int *otag, unsigned char *oclass,
          1079.                              char *inf, char *cst,
          1080.                              const unsigned char **in, long len,

crypto/asn1/tasn_dec.c:1087:5: Assignment
          1085.       long plen;
          1086.       const unsigned char *p, *q;
          1087.       p = *in;
                      ^
          1088.       q = p;
          1089.   

crypto/asn1/tasn_dec.c:1097:13: Call
          1095.           p += ctx->hdrlen;
          1096.       } else {
          1097.           i = ASN1_get_object(&p, &plen, &ptag, &pclass, len);
                              ^
          1098.           if (ctx) {
          1099.               ctx->ret = i;

crypto/asn1/asn1_lib.c:44:1: Parameter `**pp`
            42.   }
            43.   
            44. > int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag,
            45.                       int *pclass, long omax)
            46.   {

crypto/asn1/asn1_lib.c:49:5: Assignment
            47.       int i, ret;
            48.       long l;
            49.       const unsigned char *p = *pp;
                      ^
            50.       int tag, xclass, inf;
            51.       long max = omax;

crypto/asn1/asn1_lib.c:78:9: Assignment
            76.       } else {
            77.           tag = i;
            78.           p++;
                          ^
            79.           if (--max == 0)
            80.               goto err;

crypto/asn1/asn1_lib.c:84:10: Call
            82.       *ptag = tag;
            83.       *pclass = xclass;
            84.       if (!asn1_get_length(&p, &inf, plength, max))
                           ^
            85.           goto err;
            86.   

crypto/asn1/asn1_lib.c:112:1: <Length trace>
110.    * are stored most significant digit first.
111.    */
112. > static int asn1_get_length(const unsigned char **pp, int *inf, long *rl,
113.                              long max)
114.   {

crypto/asn1/asn1_lib.c:112:1: Parameter `**pp`
              110.    * are stored most significant digit first.
              111.    */
              112. > static int asn1_get_length(const unsigned char **pp, int *inf, long *rl,
              113.                              long max)
              114.   {

crypto/asn1/asn1_lib.c:115:5: Assignment
              113.                              long max)
              114.   {
              115.       const unsigned char *p = *pp;
                         ^
              116.       unsigned long ret = 0;
              117.       int i;

crypto/asn1/asn1_lib.c:127:14: Assignment
              125.           *inf = 0;
              126.           i = *p & 0x7f;
              127.           if (*p++ & 0x80) {
                                  ^
              128.               if (max < i + 1)
              129.                   return 0;

crypto/asn1/asn1_lib.c:131:29: Array access: Offset: [2, +oo] Size: [1, +oo] by call to `d2i_PKCS8_PRIV_KEY_INFO` 
              129.                   return 0;
              130.               /* Skip leading zeroes */
              131.               while (i > 0 && *p == 0) {
                                                 ^
              132.                   p++;
              133.                   i--;
