lavu/dict: check for malloc failures
authorwm4 <nfxjfg@googlemail.com>
Fri, 12 Dec 2014 17:15:39 +0000 (18:15 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 12 Dec 2014 22:40:50 +0000 (23:40 +0100)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavutil/dict.c

index 2983ea5..a362de0 100644 (file)
@@ -75,6 +75,8 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value,
 
     if (!m)
         m = *pm = av_mallocz(sizeof(*m));
+    if (!m)
+        goto err_out;
 
     if (tag) {
         if (flags & AV_DICT_DONT_OVERWRITE) {
@@ -100,6 +102,8 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value,
             m->elems[m->count].key = (char*)(intptr_t)key;
         else
             m->elems[m->count].key = av_strdup(key);
+        if (!m->elems[m->count].key)
+            goto err_out;
         if (flags & AV_DICT_DONT_STRDUP_VAL) {
             m->elems[m->count].value = (char*)(intptr_t)value;
         } else if (oldval && flags & AV_DICT_APPEND) {
@@ -123,7 +127,7 @@ int av_dict_set(AVDictionary **pm, const char *key, const char *value,
     return 0;
 
 err_out:
-    if (!m->count) {
+    if (m && !m->count) {
         av_free(m->elems);
         av_freep(pm);
     }