crypto/asn1/p5_pbe.c:149: error: BUFFER_OVERRUN_L3
  Offset: [3, +oo] Size: [0, +oo] by call to `i2d_PBEPARAM`.
Showing all 29 steps of the trace


crypto/asn1/p5_pbe.c:140:15: Call
138.   	if (salt) memcpy (pbe->salt->data, salt, saltlen);
139.   	else RAND_bytes (pbe->salt->data, saltlen);
140.   	if (!(plen = i2d_PBEPARAM (pbe, NULL))) {
                     ^
141.   		ASN1err(ASN1_F_ASN1_PBE_SET,ASN1_R_ENCODE_ERROR);
142.   		return NULL;

crypto/asn1/p5_pbe.c:75:2: Assignment
  73.   int i2d_PBEPARAM(PBEPARAM *a, unsigned char **pp)
  74.   {
  75.   	M_ASN1_I2D_vars(a);
         ^
  76.   	M_ASN1_I2D_len (a->salt, i2d_ASN1_OCTET_STRING);
  77.   	M_ASN1_I2D_len (a->iter, i2d_ASN1_INTEGER);

crypto/asn1/p5_pbe.c:140:8: Assignment
138.   	if (salt) memcpy (pbe->salt->data, salt, saltlen);
139.   	else RAND_bytes (pbe->salt->data, saltlen);
140.   	if (!(plen = i2d_PBEPARAM (pbe, NULL))) {
              ^
141.   		ASN1err(ASN1_F_ASN1_PBE_SET,ASN1_R_ENCODE_ERROR);
142.   		return NULL;

crypto/asn1/p5_pbe.c:144:16: Array declaration
142.   		return NULL;
143.   	}
144.   	if (!(pdata = Malloc (plen))) {
                      ^
145.   		ASN1err(ASN1_F_ASN1_PBE_SET,ERR_R_MALLOC_FAILURE);
146.   		return NULL;

crypto/asn1/p5_pbe.c:144:8: Assignment
142.   		return NULL;
143.   	}
144.   	if (!(pdata = Malloc (plen))) {
              ^
145.   		ASN1err(ASN1_F_ASN1_PBE_SET,ERR_R_MALLOC_FAILURE);
146.   		return NULL;

crypto/asn1/p5_pbe.c:148:2: Assignment
146.   		return NULL;
147.   	}
148.   	ptmp = pdata;
        ^
149.   	i2d_PBEPARAM (pbe, &ptmp);
150.   	PBEPARAM_free (pbe);

crypto/asn1/p5_pbe.c:149:2: Call
147.   	}
148.   	ptmp = pdata;
149.   	i2d_PBEPARAM (pbe, &ptmp);
        ^
150.   	PBEPARAM_free (pbe);
151.   

crypto/asn1/p5_pbe.c:73:1: Parameter `**pp`
  71.    */
  72.   
  73. > int i2d_PBEPARAM(PBEPARAM *a, unsigned char **pp)
  74.   {
  75.   	M_ASN1_I2D_vars(a);

crypto/asn1/p5_pbe.c:79:2: Assignment
  77.   	M_ASN1_I2D_len (a->iter, i2d_ASN1_INTEGER);
  78.   
  79.   	M_ASN1_I2D_seq_total ();
         ^
  80.   
  81.   	M_ASN1_I2D_put (a->salt, i2d_ASN1_OCTET_STRING);

crypto/asn1/p5_pbe.c:79:2: Call
  77.   	M_ASN1_I2D_len (a->iter, i2d_ASN1_INTEGER);
  78.   
  79.   	M_ASN1_I2D_seq_total ();
         ^
  80.   
  81.   	M_ASN1_I2D_put (a->salt, i2d_ASN1_OCTET_STRING);

crypto/asn1/asn1_lib.c:186:1: Parameter `**pp`
    184.   /* class 0 is constructed
    185.    * constructed == 2 for indefinitle length constructed */
    186. > void ASN1_put_object(unsigned char **pp, int constructed, int length, int tag,
    187.   	     int xclass)
    188.   	{

crypto/asn1/asn1_lib.c:189:2: Assignment
    187.   	     int xclass)
    188.   	{
    189.   	unsigned char *p= *pp;
            ^
    190.   	int i;
    191.   

crypto/asn1/asn1_lib.c:195:5: Assignment
    193.   	i|=(xclass&V_ASN1_PRIVATE);
    194.   	if (tag < 31)
    195.   		*(p++)=i|(tag&V_ASN1_PRIMATIVE_TAG);
               ^
    196.   	else
    197.   		{

crypto/asn1/asn1_lib.c:207:5: Assignment
    205.   		}
    206.   	if ((constructed == 2) && (length == 0))
    207.   		*(p++)=0x80; /* der_put_length would output 0 instead */
               ^
    208.   	else
    209.   		asn1_put_length(&p,length);

crypto/asn1/asn1_lib.c:210:2: Assignment
    208.   	else
    209.   		asn1_put_length(&p,length);
    210.   	*pp=p;
            ^
    211.   	}
    212.   

crypto/asn1/p5_pbe.c:81:2: Call
  79.   	M_ASN1_I2D_seq_total ();
  80.   
  81.   	M_ASN1_I2D_put (a->salt, i2d_ASN1_OCTET_STRING);
         ^
  82.   	M_ASN1_I2D_put (a->iter, i2d_ASN1_INTEGER);
  83.   	M_ASN1_I2D_finish();

crypto/asn1/a_octet.c:66:1: Parameter `**pp`
    64.    */
    65.   
    66. > int i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **pp)
    67.   	{
    68.   	return(i2d_ASN1_bytes((ASN1_STRING *)a,pp,

crypto/asn1/a_octet.c:68:9: Call
    66.   int i2d_ASN1_OCTET_STRING(ASN1_OCTET_STRING *a, unsigned char **pp)
    67.   	{
    68.   	return(i2d_ASN1_bytes((ASN1_STRING *)a,pp,
                  ^
    69.   		V_ASN1_OCTET_STRING,V_ASN1_UNIVERSAL));
    70.   	}

crypto/asn1/a_bytes.c:150:1: Parameter `**pp`
      148.   	}
      149.   
      150. > int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass)
      151.   	{
      152.   	int ret,r,constructed;

crypto/asn1/a_bytes.c:163:2: Assignment
      161.   	r=ASN1_object_size(0,ret,tag);
      162.   	if (pp == NULL) return(r);
      163.   	p= *pp;
              ^
      164.   
      165.   	if ((tag == V_ASN1_SEQUENCE) || (tag == V_ASN1_SET))

crypto/asn1/a_bytes.c:169:2: Call
      167.   	else
      168.   		constructed=0;
      169.   	ASN1_put_object(&p,constructed,ret,tag,xclass);
              ^
      170.   	memcpy(p,a->data,a->length);
      171.   	p+=a->length;

crypto/asn1/asn1_lib.c:186:1: Parameter `**pp`
        184.   /* class 0 is constructed
        185.    * constructed == 2 for indefinitle length constructed */
        186. > void ASN1_put_object(unsigned char **pp, int constructed, int length, int tag,
        187.   	     int xclass)
        188.   	{

crypto/asn1/asn1_lib.c:189:2: Assignment
        187.   	     int xclass)
        188.   	{
        189.   	unsigned char *p= *pp;
                ^
        190.   	int i;
        191.   

crypto/asn1/asn1_lib.c:195:5: Assignment
        193.   	i|=(xclass&V_ASN1_PRIVATE);
        194.   	if (tag < 31)
        195.   		*(p++)=i|(tag&V_ASN1_PRIMATIVE_TAG);
                   ^
        196.   	else
        197.   		{

crypto/asn1/asn1_lib.c:209:3: Call
        207.   		*(p++)=0x80; /* der_put_length would output 0 instead */
        208.   	else
        209.   		asn1_put_length(&p,length);
                 ^
        210.   	*pp=p;
        211.   	}

crypto/asn1/asn1_lib.c:213:1: <Length trace>
211.   	}
212.   
213. > static void asn1_put_length(unsigned char **pp, int length)
214.   	{
215.   	unsigned char *p= *pp;

crypto/asn1/asn1_lib.c:213:1: Parameter `**pp`
          211.   	}
          212.   
          213. > static void asn1_put_length(unsigned char **pp, int length)
          214.   	{
          215.   	unsigned char *p= *pp;

crypto/asn1/asn1_lib.c:215:2: Assignment
          213.   static void asn1_put_length(unsigned char **pp, int length)
          214.   	{
          215.   	unsigned char *p= *pp;
                  ^
          216.   	int i,l;
          217.   	if (length <= 127)

crypto/asn1/asn1_lib.c:218:3: Array access: Offset: [3, +oo] Size: [0, +oo] by call to `i2d_PBEPARAM` 
          216.   	int i,l;
          217.   	if (length <= 127)
          218.   		*(p++)=(unsigned char)length;
                   ^
          219.   	else
          220.   		{
