ref: 8d472e29e9609d0237274d88b516eb1b9b3ef825
parent: 6327a3b3b24d83df68c763c182fc89eb915eac3e
author: Erik de Castro Lopo <erikd@mega-nerd.com>
date: Tue Aug 6 13:44:37 EDT 2019
Fix two potential undefined behaviours Avoid shifting a signed value and avoid passing a NULL to memcpy.
--- a/src/src_sinc.c
+++ b/src/src_sinc.c
@@ -140,7 +140,7 @@
sinc_set_converter (SRC_PRIVATE *psrc, int src_enum)
{ SINC_FILTER *filter, temp_filter ;
increment_t count ;
- int bits ;
+ uint32_t bits ;
/* Quick sanity check. */
if (SHIFT_BITS >= sizeof (increment_t) * 8 - 1)
@@ -1158,6 +1158,9 @@
if (filter->b_real_end >= 0)
return 0 ; /* Should be terminating. Just return. */
+
+ if (data->data_in == NULL)
+ return 0 ;
if (filter->b_current == 0)
{ /* Initial state. Set up zeros at the start of the buffer and