From 5271dab29a4656f92b51870f9221a1b0918a0d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20L=C3=B3pez?= <00xc@protonmail.com> Date: Wed, 28 Feb 2024 14:06:26 +0100 Subject: [PATCH] Fix undefined behavior in VP9Decoder::decode() In VP9Decoder::decode(), if vpx_codec_decode() fails and `private` is None, we attempt to construct a Box via Box::from_raw() from a NULL pointer, which is undefined behavior. --- src/decoder.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/decoder.rs b/src/decoder.rs index c432929..b20e1f4 100644 --- a/src/decoder.rs +++ b/src/decoder.rs @@ -130,7 +130,9 @@ impl VP9Decoder { match ret { VPX_CODEC_OK => Ok(()), _ => { - let _ = unsafe { Box::from_raw(priv_data) }; + if !priv_data.is_null() { + let _ = unsafe { Box::from_raw(priv_data) }; + } Err(ret) } }