@@ -201,6 +201,13 @@ static void musig_api_tests(void) {
201201 CHECK (secp256k1_musig_pubkey_agg (CTX , & agg_pk , & keyagg_cache , pk_ptr , 2 ) == 1 );
202202 CHECK (secp256k1_musig_pubkey_agg (CTX , NULL , & keyagg_cache , pk_ptr , 2 ) == 1 );
203203 CHECK (secp256k1_musig_pubkey_agg (CTX , & agg_pk , NULL , pk_ptr , 2 ) == 1 );
204+ /* check that NULL in array of public key pointers is not allowed */
205+ for (i = 0 ; i < 2 ; i ++ ) {
206+ const secp256k1_pubkey * original_ptr = pk_ptr [i ];
207+ pk_ptr [i ] = NULL ;
208+ CHECK_ILLEGAL (CTX , secp256k1_musig_pubkey_agg (CTX , & agg_pk , NULL , pk_ptr , 2 ));
209+ pk_ptr [i ] = original_ptr ;
210+ }
204211 CHECK_ILLEGAL (CTX , secp256k1_musig_pubkey_agg (CTX , & agg_pk , & keyagg_cache , NULL , 2 ));
205212 CHECK (memcmp_and_randomize (agg_pk .data , zeros132 , sizeof (agg_pk .data )) == 0 );
206213 CHECK_ILLEGAL (CTX , secp256k1_musig_pubkey_agg (CTX , & agg_pk , & keyagg_cache , invalid_pk_ptr2 , 2 ));
@@ -350,6 +357,13 @@ static void musig_api_tests(void) {
350357
351358 /** Receive nonces and aggregate **/
352359 CHECK (secp256k1_musig_nonce_agg (CTX , & aggnonce , pubnonce_ptr , 2 ) == 1 );
360+ /* check that NULL in array of public nonce pointers is not allowed */
361+ for (i = 0 ; i < 2 ; i ++ ) {
362+ const secp256k1_musig_pubnonce * original_ptr = pubnonce_ptr [i ];
363+ pubnonce_ptr [i ] = NULL ;
364+ CHECK_ILLEGAL (CTX , secp256k1_musig_nonce_agg (CTX , & aggnonce , pubnonce_ptr , 2 ));
365+ pubnonce_ptr [i ] = original_ptr ;
366+ }
353367 CHECK_ILLEGAL (CTX , secp256k1_musig_nonce_agg (CTX , NULL , pubnonce_ptr , 2 ));
354368 CHECK_ILLEGAL (CTX , secp256k1_musig_nonce_agg (CTX , & aggnonce , NULL , 2 ));
355369 CHECK_ILLEGAL (CTX , secp256k1_musig_nonce_agg (CTX , & aggnonce , pubnonce_ptr , 0 ));
@@ -474,6 +488,13 @@ static void musig_api_tests(void) {
474488
475489 /** Signature aggregation and verification */
476490 CHECK (secp256k1_musig_partial_sig_agg (CTX , pre_sig , & session , partial_sig_ptr , 2 ) == 1 );
491+ /* check that NULL in array of partial signature pointers is not allowed */
492+ for (i = 0 ; i < 2 ; i ++ ) {
493+ const secp256k1_musig_partial_sig * original_ptr = partial_sig_ptr [i ];
494+ partial_sig_ptr [i ] = NULL ;
495+ CHECK_ILLEGAL (CTX , secp256k1_musig_partial_sig_agg (CTX , pre_sig , & session , partial_sig_ptr , 2 ));
496+ partial_sig_ptr [i ] = original_ptr ;
497+ }
477498 CHECK_ILLEGAL (CTX , secp256k1_musig_partial_sig_agg (CTX , NULL , & session , partial_sig_ptr , 2 ));
478499 CHECK_ILLEGAL (CTX , secp256k1_musig_partial_sig_agg (CTX , pre_sig , NULL , partial_sig_ptr , 2 ));
479500 CHECK_ILLEGAL (CTX , secp256k1_musig_partial_sig_agg (CTX , pre_sig , & invalid_session , partial_sig_ptr , 2 ));
0 commit comments