From f9d7e5829c714fb0de1912089d320e036972c6ec Mon Sep 17 00:00:00 2001 From: zlago Date: Thu, 31 Jul 2025 19:59:46 +0200 Subject: add bounds checking to organya modules --- src/portaudio.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/portaudio.c') diff --git a/src/portaudio.c b/src/portaudio.c index 7ff6ca3..e5c5d92 100644 --- a/src/portaudio.c +++ b/src/portaudio.c @@ -36,6 +36,22 @@ int audio_callback(void const *inBuf, void *outBuf, unsigned long const frameCou int (*file_ext(char *file))(struct blob *, struct userdata *); +#include +#include +static void alsa_shut_up(char const *file, int line, char const *function, int err, char const *fmt, ...) { + if (err == 0) { + // duckGPT claims its not unsafe to return before using va_ functions + return; + } + // ALSA lib (real) + fprintf(stderr, "ALSA lib %s:%i:(%s) ", file, line, function); + va_list list; + va_start(list, fmt); + vfprintf(stderr, fmt, list); + va_end(list); + putc('\n', stderr); +} + int main(int argc, char **argv) { if (argc != 2) { eprintf("usage: %s audio-file.{mid,mod,xm,it,s3m}\n", argv[0]); @@ -59,11 +75,13 @@ int main(int argc, char **argv) { signal(SIGINT, sigint_handler); // signal(3) claims this method is deprecated, but.. + snd_lib_error_set_handler(alsa_shut_up); PaError paErr; if ((paErr = Pa_Initialize()) != paNoError) { printf("error: Pa_Initialize: %s\n", Pa_GetErrorText(paErr)); goto error; } + snd_lib_error_set_handler(NULL); PaStream *stream; if ((paErr = Pa_OpenDefaultStream( -- cgit v1.2.3