@@ -179,28 +179,37 @@ static void test_schnorrsig_aggregate_api(void) {
179
179
unsigned char aggsig [32 * (N_MAX + 1 )];
180
180
test_schnorrsig_aggregate_input_helper (pubkeys , msgs32 , sigs64 , n );
181
181
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. */
184
183
{
184
+ /* Should not accept NULL for aggsig or aggsig length */
185
185
size_t aggsig_len = sizeof (aggsig );
186
186
CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_aggregate (CTX , NULL , & aggsig_len , pubkeys , msgs32 , sigs64 , n_initial ));
187
187
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
+ }
191
194
}
192
195
193
196
/* Test body 2: Check API of function inc_aggregate. */
194
197
{
195
198
size_t aggsig_len = sizeof (aggsig );
196
199
CHECK (secp256k1_schnorrsig_aggregate (CTX , aggsig , & aggsig_len , pubkeys , msgs32 , sigs64 , n_initial ));
197
200
aggsig_len = 32 * (n + 1 );
198
- /* Should not accept NULL for any pointer input. */
201
+ /* Should not accept NULL for aggsig or aggsig length */
199
202
CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , NULL , & aggsig_len , pubkeys , msgs32 , & sigs64 [n_initial * 64 ], n_initial , n_new ));
200
203
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
+ }
204
213
/* Should not accept overflowing number of sigs. */
205
214
CHECK_ILLEGAL (CTX , secp256k1_schnorrsig_inc_aggregate (CTX , aggsig , & aggsig_len , pubkeys , msgs32 , & sigs64 [n_initial * 64 ], SIZE_MAX , SIZE_MAX ));
206
215
if (n_initial > 0 ) {
0 commit comments