Commit f4c9499198 for freeswitch.com
commit f4c9499198de17d411d8e65a3ae172da71dda290
Author: Andrey Volk <andywolk@gmail.com>
Date: Sun Feb 16 14:31:13 2020 +0400
[libvpx] scan-build: Fix "Dereference of null pointer" in vp8_peek_si_internal
diff --git a/libs/libvpx/vp8/vp8_dx_iface.c b/libs/libvpx/vp8/vp8_dx_iface.c
index 6d88e5154f..c11abbad9a 100644
--- a/libs/libvpx/vp8/vp8_dx_iface.c
+++ b/libs/libvpx/vp8/vp8_dx_iface.c
@@ -123,11 +123,17 @@ static vpx_codec_err_t vp8_destroy(vpx_codec_alg_priv_t *ctx) {
return VPX_CODEC_OK;
}
+#ifdef __clang_analyzer__
+#define FUNC_ATTR_NONNULL(...) __attribute__((nonnull(__VA_ARGS__)))
+#else
+#define FUNC_ATTR_NONNULL(...)
+#endif
+
static vpx_codec_err_t vp8_peek_si_internal(const uint8_t *data,
unsigned int data_sz,
vpx_codec_stream_info_t *si,
vpx_decrypt_cb decrypt_cb,
- void *decrypt_state) {
+ void *decrypt_state) FUNC_ATTR_NONNULL(1) {
vpx_codec_err_t res = VPX_CODEC_OK;
assert(data != NULL);
@@ -273,7 +279,7 @@ static int update_fragments(vpx_codec_alg_priv_t *ctx, const uint8_t *data,
static vpx_codec_err_t vp8_decode(vpx_codec_alg_priv_t *ctx,
const uint8_t *data, unsigned int data_sz,
void *user_priv, long deadline) {
- volatile vpx_codec_err_t res;
+ volatile vpx_codec_err_t res = VPX_CODEC_INVALID_PARAM;
volatile unsigned int resolution_change = 0;
unsigned int w, h;
@@ -291,8 +297,10 @@ static vpx_codec_err_t vp8_decode(vpx_codec_alg_priv_t *ctx,
w = ctx->si.w;
h = ctx->si.h;
- res = vp8_peek_si_internal(ctx->fragments.ptrs[0], ctx->fragments.sizes[0],
+ if (ctx->fragments.ptrs[0]) {
+ res = vp8_peek_si_internal(ctx->fragments.ptrs[0], ctx->fragments.sizes[0],
&ctx->si, ctx->decrypt_cb, ctx->decrypt_state);
+ }
if ((res == VPX_CODEC_UNSUP_BITSTREAM) && !ctx->si.is_kf) {
/* the peek function returns an error for non keyframes, however for