comparison libinterp/dldfcn/audiodevinfo.cc @ 28162:41750ce4752c stable

Better input validation for audioplayer (bug #57939). * audiodevinfo.cc (__player_audioplayer__): Validate that NBITS input is one of 8, 16, or 24.
author Rik <rik@octave.org>
date Sun, 15 Mar 2020 14:53:33 -0700
parents bd51beb6205e
children 21970ad14781
comparison
equal deleted inserted replaced
28159:54d6f1b5fab2 28162:41750ce4752c
2376 error ("audioplayer: callbacks not yet implemented"); 2376 error ("audioplayer: callbacks not yet implemented");
2377 2377
2378 recorder->set_y (args(0)); 2378 recorder->set_y (args(0));
2379 recorder->set_fs (args(1).int_value ()); 2379 recorder->set_fs (args(1).int_value ());
2380 2380
2381 switch (args.length ()) 2381 if (args.length () > 2)
2382 { 2382 {
2383 case 3: 2383 // FIXME: Should be able to support 32-bit streams (bug #57939)
2384 recorder->set_nbits (args(2).int_value ()); 2384 int nbits = args(2).int_value ();
2385 break; 2385 if (nbits != 8 || nbits != 16 || nbits != 24)
2386 2386 error ("audioplayer: NBITS must be 8, 16, or 24");
2387 case 4: 2387
2388 recorder->set_nbits (args(2).int_value ()); 2388 switch (args.length ())
2389 recorder->set_id (args(3).int_value ()); 2389 {
2390 break; 2390 case 3:
2391 recorder->set_nbits (nbits);
2392 break;
2393
2394 case 4:
2395 recorder->set_nbits (nbits);
2396 recorder->set_id (args(3).int_value ());
2397 break;
2398 }
2391 } 2399 }
2392 2400
2393 if (is_function) 2401 if (is_function)
2394 recorder->init_fn (); 2402 recorder->init_fn ();
2395 else 2403 else