]> git.sesse.net Git - ffmpeg/blobdiff - libavutil/encryption_info.c
avformat/avformat: Constify AVFormatContext.*_codec pointers
[ffmpeg] / libavutil / encryption_info.c
index 3b7e16cd0cbc5f8e69999c3818aad34a11a8dfa2..dd3fa71a44c48dd467d68da9255175db3852aa2e 100644 (file)
@@ -297,14 +297,14 @@ uint8_t *av_encryption_init_info_add_side_data(const AVEncryptionInitInfo *info,
     temp_side_data_size = 4;
     init_info_count = 0;
     for (cur_info = info; cur_info; cur_info = cur_info->next) {
-        temp_side_data_size += (uint64_t)FF_ENCRYPTION_INIT_INFO_EXTRA + info->system_id_size + info->data_size;
+        temp_side_data_size += (uint64_t)FF_ENCRYPTION_INIT_INFO_EXTRA + cur_info->system_id_size + cur_info->data_size;
         if (init_info_count == UINT32_MAX || temp_side_data_size > UINT32_MAX) {
             return NULL;
         }
         init_info_count++;
 
-        if (info->num_key_ids) {
-            temp_side_data_size += (uint64_t)info->num_key_ids * info->key_id_size;
+        if (cur_info->num_key_ids) {
+            temp_side_data_size += (uint64_t)cur_info->num_key_ids * cur_info->key_id_size;
             if (temp_side_data_size > UINT32_MAX) {
                 return NULL;
             }
@@ -331,8 +331,10 @@ uint8_t *av_encryption_init_info_add_side_data(const AVEncryptionInitInfo *info,
             memcpy(cur_buffer, cur_info->key_ids[i], cur_info->key_id_size);
             cur_buffer += cur_info->key_id_size;
         }
-        memcpy(cur_buffer, cur_info->data, cur_info->data_size);
-        cur_buffer += cur_info->data_size;
+        if (cur_info->data_size > 0) {
+            memcpy(cur_buffer, cur_info->data, cur_info->data_size);
+            cur_buffer += cur_info->data_size;
+        }
     }
 
     return buffer;