rsa_import: prevent double-free
This commit is contained in:
		
							parent
							
								
									5c9fa403ff
								
							
						
					
					
						commit
						2cd666f284
					
				| @ -62,11 +62,10 @@ int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key) | ||||
|                                            LTC_ASN1_EOL,     0UL, NULL)) != CRYPT_OK) { | ||||
|          goto LBL_ERR; | ||||
|       } | ||||
|       XFREE(tmpbuf); | ||||
|       key->type = PK_PUBLIC; | ||||
|       return CRYPT_OK; | ||||
|       err = CRYPT_OK; | ||||
|       goto LBL_FREE; | ||||
|    } | ||||
|    XFREE(tmpbuf); | ||||
| 
 | ||||
|    /* not SSL public key, try to match against LTC_PKCS #1 standards */ | ||||
|    if ((err = der_decode_sequence_multi(in, inlen,  | ||||
| @ -110,10 +109,16 @@ int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key) | ||||
|       } | ||||
|       key->type = PK_PUBLIC; | ||||
|    } | ||||
|    return CRYPT_OK; | ||||
|    err = CRYPT_OK; | ||||
|    goto LBL_FREE; | ||||
| 
 | ||||
| LBL_ERR: | ||||
|    XFREE(tmpbuf); | ||||
|    mp_clear_multi(key->d,  key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL); | ||||
| 
 | ||||
| LBL_FREE: | ||||
|    if (tmpbuf != NULL) | ||||
|      XFREE(tmpbuf); | ||||
| 
 | ||||
|    return err; | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user