On 10.11.2014 03:21, Michael Niedermayer wrote:
On Sun, Nov 09, 2014 at 11:22:46PM +0100, Lukasz Marek wrote:
set_string_binary crashes with called with val=NULL

Signed-off-by: Lukasz Marek <lukasz.m.lu...@gmail.com>
---
  libavutil/opt.c | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libavutil/opt.c b/libavutil/opt.c
index fca5354..bc62044 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -126,11 +126,15 @@ static int set_string_binary(void *obj, const AVOption 
*o, const char *val, uint
  {
      int *lendst = (int *)(dst + 1);
      uint8_t *bin, *ptr;
-    int len = strlen(val);
+    int len;

      av_freep(dst);
      *lendst = 0;

+    if (!val)
+        return AVERROR(EINVAL);

this deallocates dest and then returns failure
shouldnt it either not fail or not change the state of dst ?

Yes, it is inconsistent.  I changed to return 0.
Also, I added check for length 0 to avoid malloc returned some pointer for 0 bytes block.

>From e67c9094e699997cb01e2ec2dcc0a7da19ed9c03 Mon Sep 17 00:00:00 2001
From: Lukasz Marek <lukasz.m.lu...@gmail.com>
Date: Sun, 9 Nov 2014 23:15:58 +0100
Subject: [PATCH 1/4] lavu/opt: check for NULL before parsing

set_string_binary crashes with called with val=NULL

Signed-off-by: Lukasz Marek <lukasz.m.lu...@gmail.com>
---
 libavutil/opt.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/libavutil/opt.c b/libavutil/opt.c
index fca5354..c064357 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -126,11 +126,14 @@ static int set_string_binary(void *obj, const AVOption *o, const char *val, uint
 {
     int *lendst = (int *)(dst + 1);
     uint8_t *bin, *ptr;
-    int len = strlen(val);
+    int len;
 
     av_freep(dst);
     *lendst = 0;
 
+    if (!val || !(len = strlen(val)))
+        return 0;
+
     if (len & 1)
         return AVERROR(EINVAL);
     len /= 2;
-- 
1.9.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to