Unified · Split
| @@ -2799,6 +2799,7 @@ static int mov_write_hdlr_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra · 2798 unmodified lines | ||
| 2799 | 2799 | MOVMuxContext *mov = s->priv_data; |
| 2800 | 2800 | const char *hdlr, *descr = NULL, *hdlr_type = NULL; |
| 2801 | 2801 | int64_t pos = avio_tell(pb); |
| 2802 | + size_t descr_len; | |
| 2802 | 2803 | |
| 2803 | 2804 | hdlr = "dhlr"; |
| 2804 | 2805 | hdlr_type = "url "; |
| @@ -2864,9 +2865,10 @@ static int mov_write_hdlr_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *tra · 59 unmodified lines | ||
| 2864 | 2865 | avio_wb32(pb, 0); /* reserved */ |
| 2865 | 2866 | avio_wb32(pb, 0); /* reserved */ |
| 2866 | 2867 | avio_wb32(pb, 0); /* reserved */ |
| 2868 | + descr_len = strlen(descr); | |
| 2867 | 2869 | if (!track || track->mode == MODE_MOV) |
| 2868 | − avio_w8(pb, strlen(descr)); /* pascal string */ | |
| 2869 | − avio_write(pb, descr, strlen(descr)); /* handler description */ | |
| 2870 | + avio_w8(pb, descr_len); /* pascal string */ | |
| 2871 | + avio_write(pb, descr, descr_len); /* handler description */ | |
| 2870 | 2872 | if (track && track->mode != MODE_MOV) |
| 2871 | 2873 | avio_w8(pb, 0); /* c string */ |
| 2872 | 2874 | return update_size(pb, pos); |
| @@ -3539,21 +3541,22 @@ static int mov_write_itunes_hdlr_tag(AVIOContext *pb, MOVMuxContext *mov, · 666 unmodified lines | ||
| 3539 | 3541 | /* helper function to write a data tag with the specified string as data */ |
| 3540 | 3542 | static int mov_write_string_data_tag(AVIOContext *pb, const char *data, int lang, int long_style) |
| 3541 | 3543 | { |
| 3544 | + size_t data_len = strlen(data); | |
| 3542 | 3545 | if (long_style) { |
| 3543 | − int size = 16 + strlen(data); | |
| 3546 | + int size = 16 + data_len; | |
| 3544 | 3547 | avio_wb32(pb, size); /* size */ |
| 3545 | 3548 | ffio_wfourcc(pb, "data"); |
| 3546 | 3549 | avio_wb32(pb, 1); |
| 3547 | 3550 | avio_wb32(pb, 0); |
| 3548 | − avio_write(pb, data, strlen(data)); | |
| 3551 | + avio_write(pb, data, data_len); | |
| 3549 | 3552 | return size; |
| 3550 | 3553 | } else { |
| 3554 | + avio_wb16(pb, data_len); /* string length */ | |
| 3551 | 3555 | if (!lang) |
| 3552 | 3556 | lang = ff_mov_iso639_to_lang("und", 1); |
| 3553 | − avio_wb16(pb, strlen(data)); /* string length */ | |
| 3554 | 3557 | avio_wb16(pb, lang); |
| 3555 | − avio_write(pb, data, strlen(data)); | |
| 3556 | − return strlen(data) + 4; | |
| 3558 | + avio_write(pb, data, data_len); | |
| 3559 | + return data_len + 4; | |
| 3557 | 3560 | } |
| 3558 | 3561 | } |
| 3559 | 3562 | |
| @@ -3829,9 +3832,10 @@ static int mov_write_mdta_keys_tag(AVIOContext *pb, MOVMuxContext *mov, · 269 unmodified lines | ||
| 3829 | 3832 | avio_wb32(pb, 0); /* entry count */ |
| 3830 | 3833 | |
| 3831 | 3834 | while (t = av_dict_get(s->metadata, "", t, AV_DICT_IGNORE_SUFFIX)) { |
| 3832 | − avio_wb32(pb, strlen(t->key) + 8); | |
| 3835 | + size_t key_len = strlen(t->key); | |
| 3836 | + avio_wb32(pb, key_len + 8); | |
| 3833 | 3837 | ffio_wfourcc(pb, "mdta"); |
| 3834 | − avio_write(pb, t->key, strlen(t->key)); | |
| 3838 | + avio_write(pb, t->key, key_len); | |
| 3835 | 3839 | count += 1; |
| 3836 | 3840 | } |
| 3837 | 3841 | curpos = avio_tell(pb); |