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