diff --git a/spa/plugins/alsa/acp/compat.h b/spa/plugins/alsa/acp/compat.h index 84d8ee97c..356ef0747 100644 --- a/spa/plugins/alsa/acp/compat.h +++ b/spa/plugins/alsa/acp/compat.h @@ -35,6 +35,7 @@ extern "C" { #include #include #include +#include #include @@ -662,6 +663,8 @@ static inline char *pa_readlink(const char *p) { ssize_t n; c = pa_xmalloc(l); + if (c == NULL) + return NULL; if ((n = readlink(p, c, l-1)) < 0) { pa_xfree(c); @@ -674,6 +677,9 @@ static inline char *pa_readlink(const char *p) { } pa_xfree(c); + + if (l >= (size_t)(INT_MAX / 2)) + return NULL; l *= 2; } #else