crypto/pem/pem_pkey.c:217: error: BUFFER_OVERRUN_L3
  Offset: [2, +oo] Size: [1, +oo] by call to `d2i_DHxparams`.
Showing all 29 steps of the trace


crypto/pem/pem_pkey.c:212:10: Call
210.       DH *ret = NULL;
211.   
212.       if (!PEM_bytes_read_bio(&data, &len, &nm, PEM_STRING_DHPARAMS, bp, cb, u))
                ^
213.           return NULL;
214.       p = data;

crypto/pem/pem_lib.c:280:1: Parameter `**pdata`
  278.   }
  279.   
  280. > int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm,
  281.                          const char *name, BIO *bp, pem_password_cb *cb,
  282.                          void *u) {

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

crypto/pem/pem_lib.c:237:1: Parameter `**pdata`
    235.   }
    236.   
    237. > static int pem_bytes_read_bio_flags(unsigned char **pdata, long *plen,
    238.                                       char **pnm, const char *name, BIO *bp,
    239.                                       pem_password_cb *cb, void *u,

crypto/pem/pem_pkey.c:214:5: Assignment
212.       if (!PEM_bytes_read_bio(&data, &len, &nm, PEM_STRING_DHPARAMS, bp, cb, u))
213.           return NULL;
214.       p = data;
           ^
215.   
216.       if (strcmp(nm, PEM_STRING_DHXPARAMS) == 0)

crypto/pem/pem_pkey.c:217:15: Call
215.   
216.       if (strcmp(nm, PEM_STRING_DHXPARAMS) == 0)
217.           ret = d2i_DHxparams(x, &p, len);
                     ^
218.       else
219.           ret = d2i_DHparams(x, &p, len);

crypto/dh/dh_asn1.c:81:1: Parameter `**pp`
  79.   /* Application public function: read in X9.42 DH parameters into DH structure */
  80.   
  81. > DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length)
  82.   {
  83.       int_dhx942_dh *dhx = NULL;

crypto/dh/dh_asn1.c:88:11: Call
  86.       if (dh == NULL)
  87.           return NULL;
  88.       dhx = d2i_int_dhx(NULL, pp, length);
                  ^
  89.       if (dhx == NULL) {
  90.           DH_free(dh);

crypto/dh/dh_asn1.c:77:1: Parameter `**in`
    75.   int i2d_int_dhx(const int_dhx942_dh *a, unsigned char **pp);
    76.   
    77. > IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(int_dhx942_dh, DHxparams, int_dhx)
    78.   
    79.   /* Application public function: read in X9.42 DH parameters into DH structure */

crypto/dh/dh_asn1.c:77:1: Call
    75.   int i2d_int_dhx(const int_dhx942_dh *a, unsigned char **pp);
    76.   
    77. > IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(int_dhx942_dh, DHxparams, int_dhx)
    78.   
    79.   /* Application public function: read in X9.42 DH parameters into DH structure */

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_DHxparams` 
                129.                   return 0;
                130.               /* Skip leading zeroes */
                131.               while (i > 0 && *p == 0) {
                                                   ^
                132.                   p++;
                133.                   i--;
