Check return value of malloc
This commit is contained in:
		
							parent
							
								
									2b9388b647
								
							
						
					
					
						commit
						a5759c572e
					
				| @ -27,7 +27,7 @@ static void secp256k1_ecdsa_start(void) { | ||||
|         return; | ||||
| 
 | ||||
|     /* Allocate. */ | ||||
|     secp256k1_ecdsa_consts_t *ret = (secp256k1_ecdsa_consts_t*)malloc(sizeof(secp256k1_ecdsa_consts_t)); | ||||
|     secp256k1_ecdsa_consts_t *ret = (secp256k1_ecdsa_consts_t*)checked_malloc(sizeof(secp256k1_ecdsa_consts_t)); | ||||
| 
 | ||||
|     static const unsigned char order[] = { | ||||
|         0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, | ||||
|  | ||||
| @ -34,7 +34,7 @@ static void secp256k1_ecmult_gen_start(void) { | ||||
|         return; | ||||
| 
 | ||||
|     /* Allocate the precomputation table. */ | ||||
|     secp256k1_ecmult_gen_consts_t *ret = (secp256k1_ecmult_gen_consts_t*)malloc(sizeof(secp256k1_ecmult_gen_consts_t)); | ||||
|     secp256k1_ecmult_gen_consts_t *ret = (secp256k1_ecmult_gen_consts_t*)checked_malloc(sizeof(secp256k1_ecmult_gen_consts_t)); | ||||
| 
 | ||||
|     /* get the generator */ | ||||
|     const secp256k1_ge_t *g = &secp256k1_ge_consts->g; | ||||
|  | ||||
| @ -43,7 +43,7 @@ static void secp256k1_ecmult_table_precomp_gej_var(secp256k1_gej_t *pre, const s | ||||
| 
 | ||||
| static void secp256k1_ecmult_table_precomp_ge_var(secp256k1_ge_t *pre, const secp256k1_gej_t *a, int w) { | ||||
|     const int table_size = 1 << (w-2); | ||||
|     secp256k1_gej_t *prej = malloc(sizeof(secp256k1_gej_t) * table_size); | ||||
|     secp256k1_gej_t *prej = checked_malloc(sizeof(secp256k1_gej_t) * table_size); | ||||
|     prej[0] = *a; | ||||
|     secp256k1_gej_t d; secp256k1_gej_double_var(&d, a); | ||||
|     for (int i=1; i<table_size; i++) { | ||||
| @ -86,7 +86,7 @@ static void secp256k1_ecmult_start(void) { | ||||
|         return; | ||||
| 
 | ||||
|     /* Allocate the precomputation table. */ | ||||
|     secp256k1_ecmult_consts_t *ret = (secp256k1_ecmult_consts_t*)malloc(sizeof(secp256k1_ecmult_consts_t)); | ||||
|     secp256k1_ecmult_consts_t *ret = (secp256k1_ecmult_consts_t*)checked_malloc(sizeof(secp256k1_ecmult_consts_t)); | ||||
| 
 | ||||
|     /* get the generator */ | ||||
|     const secp256k1_ge_t *g = &secp256k1_ge_consts->g; | ||||
|  | ||||
| @ -253,7 +253,7 @@ static void secp256k1_fe_start(void) { | ||||
| #endif | ||||
|     if (secp256k1_fe_consts == NULL) { | ||||
|         secp256k1_fe_inner_start(); | ||||
|         secp256k1_fe_consts_t *ret = (secp256k1_fe_consts_t*)malloc(sizeof(secp256k1_fe_consts_t)); | ||||
|         secp256k1_fe_consts_t *ret = (secp256k1_fe_consts_t*)checked_malloc(sizeof(secp256k1_fe_consts_t)); | ||||
| #ifndef USE_NUM_NONE | ||||
|         secp256k1_num_set_bin(&ret->p, secp256k1_fe_consts_p, sizeof(secp256k1_fe_consts_p)); | ||||
| #endif | ||||
|  | ||||
| @ -85,14 +85,14 @@ static void secp256k1_ge_set_gej_var(secp256k1_ge_t *r, secp256k1_gej_t *a) { | ||||
| 
 | ||||
| static void secp256k1_ge_set_all_gej_var(size_t len, secp256k1_ge_t r[len], const secp256k1_gej_t a[len]) { | ||||
|     size_t count = 0; | ||||
|     secp256k1_fe_t *az = malloc(sizeof(secp256k1_fe_t) * len); | ||||
|     secp256k1_fe_t *az = checked_malloc(sizeof(secp256k1_fe_t) * len); | ||||
|     for (size_t i=0; i<len; i++) { | ||||
|         if (!a[i].infinity) { | ||||
|             az[count++] = a[i].z; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     secp256k1_fe_t *azi = malloc(sizeof(secp256k1_fe_t) * count); | ||||
|     secp256k1_fe_t *azi = checked_malloc(sizeof(secp256k1_fe_t) * count); | ||||
|     secp256k1_fe_inv_all_var(count, azi, az); | ||||
|     free(az); | ||||
| 
 | ||||
| @ -436,7 +436,7 @@ static void secp256k1_ge_start(void) { | ||||
|     }; | ||||
| #endif | ||||
|     if (secp256k1_ge_consts == NULL) { | ||||
|         secp256k1_ge_consts_t *ret = (secp256k1_ge_consts_t*)malloc(sizeof(secp256k1_ge_consts_t)); | ||||
|         secp256k1_ge_consts_t *ret = (secp256k1_ge_consts_t*)checked_malloc(sizeof(secp256k1_ge_consts_t)); | ||||
| #ifdef USE_ENDOMORPHISM | ||||
|         VERIFY_CHECK(secp256k1_fe_set_b32(&ret->beta, secp256k1_ge_consts_beta)); | ||||
| #endif | ||||
|  | ||||
| @ -40,7 +40,7 @@ static void secp256k1_scalar_start(void) { | ||||
|         return; | ||||
| 
 | ||||
|     /* Allocate. */ | ||||
|     secp256k1_scalar_consts_t *ret = (secp256k1_scalar_consts_t*)malloc(sizeof(secp256k1_scalar_consts_t)); | ||||
|     secp256k1_scalar_consts_t *ret = (secp256k1_scalar_consts_t*)checked_malloc(sizeof(secp256k1_scalar_consts_t)); | ||||
| 
 | ||||
| #ifndef USE_NUM_NONE | ||||
|     static const unsigned char secp256k1_scalar_consts_order[] = { | ||||
|  | ||||
| @ -61,6 +61,12 @@ | ||||
| #define VERIFY_CHECK(cond) do { (void)(cond); } while(0) | ||||
| #endif | ||||
| 
 | ||||
| static inline void *checked_malloc(size_t size) { | ||||
|     void *ret = malloc(size); | ||||
|     CHECK(ret != NULL); | ||||
|     return ret; | ||||
| } | ||||
| 
 | ||||
| /* Macro for restrict, when available and not in a VERIFY build. */ | ||||
| #if defined(SECP256K1_BUILD) && defined(VERIFY) | ||||
| # define SECP256K1_RESTRICT | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user