@@ -179,28 +179,37 @@ static void test_schnorrsig_aggregate_api(void) {
179179 unsigned char aggsig [32 * (N_MAX + 1 )];
180180 test_schnorrsig_aggregate_input_helper (pubkeys , msgs32 , sigs64 , n );
181181
182- /* Test body 1: Check API of function aggregate.
183- * Should not accept NULL for any pointer input. */
182+ /* Test body 1: Check API of function aggregate. */
184183 {
184+ /* Should not accept NULL for aggsig or aggsig length */
185185 size_t aggsig_len = sizeof (aggsig );
186186 CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_aggregate (CTX , NULL , & aggsig_len , pubkeys , msgs32 , sigs64 , n_initial ));
187187 CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_aggregate (CTX , aggsig , NULL , pubkeys , msgs32 , sigs64 , n_initial ));
188- CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_aggregate (CTX , aggsig , & aggsig_len , NULL , msgs32 , sigs64 , n_initial ));
189- CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_aggregate (CTX , aggsig , & aggsig_len , pubkeys , NULL , sigs64 , n_initial ));
190- CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_aggregate (CTX , aggsig , & aggsig_len , pubkeys , msgs32 , NULL , n_initial ));
188+ /* Should not accept NULL for keys, messages, or signatures if n_initial is not 0 */
189+ if (n_initial != 0 ) {
190+ CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_aggregate (CTX , aggsig , & aggsig_len , NULL , msgs32 , sigs64 , n_initial ));
191+ CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_aggregate (CTX , aggsig , & aggsig_len , pubkeys , NULL , sigs64 , n_initial ));
192+ CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_aggregate (CTX , aggsig , & aggsig_len , pubkeys , msgs32 , NULL , n_initial ));
193+ }
191194 }
192195
193196 /* Test body 2: Check API of function inc_aggregate. */
194197 {
195198 size_t aggsig_len = sizeof (aggsig );
196199 CHECK (secp256k1_schnorrsig_aggregate (CTX , aggsig , & aggsig_len , pubkeys , msgs32 , sigs64 , n_initial ));
197200 aggsig_len = 32 * (n + 1 );
198- /* Should not accept NULL for any pointer input. */
201+ /* Should not accept NULL for aggsig or aggsig length */
199202 CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , NULL , & aggsig_len , pubkeys , msgs32 , & sigs64 [n_initial * 64 ], n_initial , n_new ));
200203 CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , aggsig , NULL , pubkeys , msgs32 , & sigs64 [n_initial * 64 ], n_initial , n_new ));
201- CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , aggsig , & aggsig_len , NULL , msgs32 , & sigs64 [n_initial * 64 ], n_initial , n_new ));
202- CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , aggsig , & aggsig_len , pubkeys , NULL , & sigs64 [n_initial * 64 ], n_initial , n_new ));
203- CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , aggsig , & aggsig_len , pubkeys , msgs32 , NULL , n_initial , n_new ));
204+ /* Should not accept NULL for keys or messages if n is not 0 */
205+ if (n != 0 ) {
206+ CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , aggsig , & aggsig_len , NULL , msgs32 , & sigs64 [n_initial * 64 ], n_initial , n_new ));
207+ CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , aggsig , & aggsig_len , pubkeys , NULL , & sigs64 [n_initial * 64 ], n_initial , n_new ));
208+ }
209+ /* Should not accept NULL for new_sigs64 if n_new is not 0 */
210+ if (n_new != 0 ) {
211+ CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , aggsig , & aggsig_len , pubkeys , msgs32 , NULL , n_initial , n_new ));
212+ }
204213 /* Should not accept overflowing number of sigs. */
205214 CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , aggsig , & aggsig_len , pubkeys , msgs32 , & sigs64 [n_initial * 64 ], SIZE_MAX , SIZE_MAX ));
206215 if (n_initial > 0 ) {
0 commit comments