summaryrefslogtreecommitdiff
path: root/libavcodec/avpacket.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-11-20 19:44:21 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-11-20 19:44:21 +0100
commite50278348a3144f7de217cede54fc24399a733f8 (patch)
treeb44c6bc43f9dff37ab633aa6108e981f8a2e44c3 /libavcodec/avpacket.c
parent34b7c82dd3d75dae115310ccdc6c15f70304bcc1 (diff)
avcodec/avpacket: fix order of operations in case of too large allocation
Found-by: wm4 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/avpacket.c')
-rw-r--r--libavcodec/avpacket.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c
index 88ec0be4a3..7a6195c1ba 100644
--- a/libavcodec/avpacket.c
+++ b/libavcodec/avpacket.c
@@ -442,9 +442,11 @@ uint8_t *av_packet_pack_dictionary(AVDictionary *dict, int *size)
const size_t new_size = *size + keylen + 1 + valuelen + 1;
uint8_t *const new_data = av_realloc(data, new_size);
- if (!new_data || new_size > INT_MAX)
+ if (!new_data)
goto fail;
data = new_data;
+ if (new_size > INT_MAX)
+ goto fail;
memcpy(data + *size, t->key, keylen + 1);
memcpy(data + *size + keylen + 1, t->value, valuelen + 1);