crypto/pkcs12/p12_kiss.c:117: error: BUFFER_OVERRUN_L2
  Offset: [0, 1] Size: 1 by call to `PKCS12_verify_mac`.
Showing all 12 steps of the trace


crypto/pkcs12/p12_kiss.c:117:11: Call
115.   	if(!pass || !*pass) {
116.   		if(PKCS12_verify_mac(p12, NULL, 0)) pass = NULL;
117.   		else if(PKCS12_verify_mac(p12, "", 0)) pass = "";
                 ^
118.   		else {
119.   			PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_MAC_VERIFY_FAILURE);

crypto/pkcs12/p12_mutl.c:96:1: Parameter `*pass`
  94.   
  95.   /* Verify the mac */
  96. > int PKCS12_verify_mac (PKCS12 *p12, const char *pass, int passlen)
  97.   {
  98.   	unsigned char mac[EVP_MAX_MD_SIZE];

crypto/pkcs12/p12_mutl.c:104:7: Call
  102.   		return 0;
  103.   	}
  104.   	if (!PKCS12_gen_mac (p12, pass, passlen, mac, &maclen)) {
               ^
  105.   		PKCS12err(PKCS12_F_VERIFY_MAC,PKCS12_R_MAC_GENERATION_ERROR);
  106.   		return 0;

crypto/pkcs12/p12_mutl.c:67:1: Parameter `*pass`
    65.   
    66.   /* Generate a MAC */
    67. > int PKCS12_gen_mac (PKCS12 *p12, const char *pass, int passlen,
    68.   		    unsigned char *mac, unsigned int *maclen)
    69.   {

crypto/pkcs12/p12_mutl.c:83:6: Call
    81.   		return 0;
    82.   	}
    83.   	if(!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter,
               ^
    84.   				 PKCS12_MAC_KEY_LENGTH, key, md_type)) {
    85.   		PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_KEY_GEN_ERROR);

crypto/pkcs12/p12_key.c:77:1: Parameter `*pass`
      75.   #endif
      76.   
      77. > int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt,
      78.   	     int saltlen, int id, int iter, int n, unsigned char *out,
      79.   	     const EVP_MD *md_type)

crypto/pkcs12/p12_key.c:87:14: Call
      85.   		unipass = NULL;
      86.   		uniplen = 0;
      87.   	} else if (!asc2uni(pass, &unipass, &uniplen)) {
                         ^
      88.   		PKCS12err(PKCS12_F_PKCS12_KEY_GEN_ASC,ERR_R_MALLOC_FAILURE);
      89.   		return 0;

crypto/pkcs12/p12_utl.c:71:7: <Offset trace>
69.   	ulen = strlen(asc)*2  + 2;
70.   	if (!(unitmp = Malloc (ulen))) return NULL;
71.   	for (i = 0; i < ulen; i+=2) {
            ^
72.   		unitmp[i] = 0;
73.   		unitmp[i + 1] = asc[i>>1];

crypto/pkcs12/p12_utl.c:71:7: Assignment
        69.   	ulen = strlen(asc)*2  + 2;
        70.   	if (!(unitmp = Malloc (ulen))) return NULL;
        71.   	for (i = 0; i < ulen; i+=2) {
                    ^
        72.   		unitmp[i] = 0;
        73.   		unitmp[i + 1] = asc[i>>1];

crypto/pkcs12/p12_utl.c:65:1: <Length trace>
63.   /* Cheap and nasty Unicode stuff */
64.   
65. > unsigned char *asc2uni (const char *asc, unsigned char **uni, int *unilen)
66.   {
67.   	int ulen, i;

crypto/pkcs12/p12_utl.c:65:1: Parameter `*asc`
        63.   /* Cheap and nasty Unicode stuff */
        64.   
        65. > unsigned char *asc2uni (const char *asc, unsigned char **uni, int *unilen)
        66.   {
        67.   	int ulen, i;

crypto/pkcs12/p12_utl.c:73:19: Array access: Offset: [0, 1] Size: 1 by call to `PKCS12_verify_mac` 
        71.   	for (i = 0; i < ulen; i+=2) {
        72.   		unitmp[i] = 0;
        73.   		unitmp[i + 1] = asc[i>>1];
                                ^
        74.   	}
        75.   	if (unilen) *unilen = ulen;
