Unified · Split
| @@ -849,14 +849,18 @@ static int write_sm_data(AVFormatContext *s, AVIOContext *bc, AVPacket *pkt, int · 848 unmodified lines | |||
| 849 | if (is_meta) { | 849 | if (is_meta) { |
| 850 | if ( pkt->side_data[i].type == AV_PKT_DATA_METADATA_UPDATE | 850 | if ( pkt->side_data[i].type == AV_PKT_DATA_METADATA_UPDATE |
| 851 | || pkt->side_data[i].type == AV_PKT_DATA_STRINGS_METADATA) { | 851 | || pkt->side_data[i].type == AV_PKT_DATA_STRINGS_METADATA) { |
| 852 | if (!size || data[size-1]) | 852 | if (!size || data[size-1]) { |
| 853 | return AVERROR(EINVAL); | 853 | ret = AVERROR(EINVAL); |
| 854 | goto fail; | ||
| 855 | } | ||
| 854 | while (data < data_end) { | 856 | while (data < data_end) { |
| 855 | const uint8_t *key = data; | 857 | const uint8_t *key = data; |
| 856 | const uint8_t *val = data + strlen(key) + 1; | 858 | const uint8_t *val = data + strlen(key) + 1; |
| 857 | 859 | ||
| 858 | if(val >= data_end) | 860 | if(val >= data_end) { |
| 859 | return AVERROR(EINVAL); | 861 | ret = AVERROR(EINVAL); |
| 862 | goto fail; | ||
| 863 | } | ||
| 860 | put_str(dyn_bc, key); | 864 | put_str(dyn_bc, key); |
| 861 | put_s(dyn_bc, -1); | 865 | put_s(dyn_bc, -1); |
| 862 | put_str(dyn_bc, val); | 866 | put_str(dyn_bc, val); |
| @@ -937,12 +941,13 @@ static int write_sm_data(AVFormatContext *s, AVIOContext *bc, AVPacket *pkt, int · 74 unmodified lines | |||
| 937 | } | 941 | } |
| 938 | } | 942 | } |
| 939 | 943 | ||
| 944 | fail: | ||
| 940 | ff_put_v(bc, sm_data_count); | 945 | ff_put_v(bc, sm_data_count); |
| 941 | dyn_size = avio_close_dyn_buf(dyn_bc, &dyn_buf); | 946 | dyn_size = avio_close_dyn_buf(dyn_bc, &dyn_buf); |
| 942 | avio_write(bc, dyn_buf, dyn_size); | 947 | avio_write(bc, dyn_buf, dyn_size); |
| 943 | av_freep(&dyn_buf); | 948 | av_freep(&dyn_buf); |
| 944 | 949 | ||
| 945 | return 0; | 950 | return ret; |
| 946 | } | 951 | } |
| 947 | 952 | ||
| 948 | static int nut_write_packet(AVFormatContext *s, AVPacket *pkt) | 953 | static int nut_write_packet(AVFormatContext *s, AVPacket *pkt) |