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; |         return; | ||||||
| 
 | 
 | ||||||
|     /* Allocate. */ |     /* 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[] = { |     static const unsigned char order[] = { | ||||||
|         0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, |         0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, | ||||||
|  | |||||||
| @ -34,7 +34,7 @@ static void secp256k1_ecmult_gen_start(void) { | |||||||
|         return; |         return; | ||||||
| 
 | 
 | ||||||
|     /* Allocate the precomputation table. */ |     /* 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 */ |     /* get the generator */ | ||||||
|     const secp256k1_ge_t *g = &secp256k1_ge_consts->g; |     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) { | 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); |     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; |     prej[0] = *a; | ||||||
|     secp256k1_gej_t d; secp256k1_gej_double_var(&d, a); |     secp256k1_gej_t d; secp256k1_gej_double_var(&d, a); | ||||||
|     for (int i=1; i<table_size; i++) { |     for (int i=1; i<table_size; i++) { | ||||||
| @ -86,7 +86,7 @@ static void secp256k1_ecmult_start(void) { | |||||||
|         return; |         return; | ||||||
| 
 | 
 | ||||||
|     /* Allocate the precomputation table. */ |     /* 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 */ |     /* get the generator */ | ||||||
|     const secp256k1_ge_t *g = &secp256k1_ge_consts->g; |     const secp256k1_ge_t *g = &secp256k1_ge_consts->g; | ||||||
|  | |||||||
| @ -253,7 +253,7 @@ static void secp256k1_fe_start(void) { | |||||||
| #endif | #endif | ||||||
|     if (secp256k1_fe_consts == NULL) { |     if (secp256k1_fe_consts == NULL) { | ||||||
|         secp256k1_fe_inner_start(); |         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 | #ifndef USE_NUM_NONE | ||||||
|         secp256k1_num_set_bin(&ret->p, secp256k1_fe_consts_p, sizeof(secp256k1_fe_consts_p)); |         secp256k1_num_set_bin(&ret->p, secp256k1_fe_consts_p, sizeof(secp256k1_fe_consts_p)); | ||||||
| #endif | #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]) { | 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; |     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++) { |     for (size_t i=0; i<len; i++) { | ||||||
|         if (!a[i].infinity) { |         if (!a[i].infinity) { | ||||||
|             az[count++] = a[i].z; |             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); |     secp256k1_fe_inv_all_var(count, azi, az); | ||||||
|     free(az); |     free(az); | ||||||
| 
 | 
 | ||||||
| @ -436,7 +436,7 @@ static void secp256k1_ge_start(void) { | |||||||
|     }; |     }; | ||||||
| #endif | #endif | ||||||
|     if (secp256k1_ge_consts == NULL) { |     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 | #ifdef USE_ENDOMORPHISM | ||||||
|         VERIFY_CHECK(secp256k1_fe_set_b32(&ret->beta, secp256k1_ge_consts_beta)); |         VERIFY_CHECK(secp256k1_fe_set_b32(&ret->beta, secp256k1_ge_consts_beta)); | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -40,7 +40,7 @@ static void secp256k1_scalar_start(void) { | |||||||
|         return; |         return; | ||||||
| 
 | 
 | ||||||
|     /* Allocate. */ |     /* 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 | #ifndef USE_NUM_NONE | ||||||
|     static const unsigned char secp256k1_scalar_consts_order[] = { |     static const unsigned char secp256k1_scalar_consts_order[] = { | ||||||
|  | |||||||
| @ -61,6 +61,12 @@ | |||||||
| #define VERIFY_CHECK(cond) do { (void)(cond); } while(0) | #define VERIFY_CHECK(cond) do { (void)(cond); } while(0) | ||||||
| #endif | #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. */ | /* Macro for restrict, when available and not in a VERIFY build. */ | ||||||
| #if defined(SECP256K1_BUILD) && defined(VERIFY) | #if defined(SECP256K1_BUILD) && defined(VERIFY) | ||||||
| # define SECP256K1_RESTRICT | # define SECP256K1_RESTRICT | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user