Message ID | AM7PR03MB666072F66561BDB626E0BF018F649@AM7PR03MB6660.eurprd03.prod.outlook.com |
---|---|
State | Accepted |
Commit | a4798a5d5109cd9c1b5682efe19660e825da97e6 |
Headers | show |
Series | [FFmpeg-devel] all: Use av_memdup() where appropriate | expand |
Context | Check | Description |
---|---|---|
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_ppc | success | Make finished |
andriy/make_fate_ppc | success | Make fate finished |
Andreas Rheinhardt: > Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> > --- > libavcodec/decode.c | 4 +--- > libavcodec/dvbsubdec.c | 8 ++------ > libavcodec/g723_1enc.c | 3 +-- > libavformat/hdsenc.c | 6 ++---- > libavformat/mpegts.c | 3 +-- > libavformat/oggparsevorbis.c | 3 +-- > libavformat/rtsp.c | 3 +-- > libavutil/bprint.c | 6 ++---- > 8 files changed, 11 insertions(+), 25 deletions(-) > > diff --git a/libavcodec/decode.c b/libavcodec/decode.c > index c44724d150..52bf5dcd33 100644 > --- a/libavcodec/decode.c > +++ b/libavcodec/decode.c > @@ -1104,12 +1104,10 @@ int ff_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt) > avctx->sw_pix_fmt = fmt[n - 1]; > } > > - choices = av_malloc_array(n + 1, sizeof(*choices)); > + choices = av_memdup(fmt, (n + 1) * sizeof(*choices)); > if (!choices) > return AV_PIX_FMT_NONE; > > - memcpy(choices, fmt, (n + 1) * sizeof(*choices)); > - > for (;;) { > // Remove the previous hwaccel, if there was one. > hwaccel_uninit(avctx); > diff --git a/libavcodec/dvbsubdec.c b/libavcodec/dvbsubdec.c > index d192f3251d..81ccaf4c57 100644 > --- a/libavcodec/dvbsubdec.c > +++ b/libavcodec/dvbsubdec.c > @@ -823,14 +823,12 @@ static int save_subtitle_set(AVCodecContext *avctx, AVSubtitle *sub, int *got_ou > } > memcpy(rect->data[1], clut_table, (1 << region->depth) * sizeof(*clut_table)); > > - rect->data[0] = av_malloc(region->buf_size); > + rect->data[0] = av_memdup(region->pbuf, region->buf_size); > if (!rect->data[0]) { > ret = AVERROR(ENOMEM); > goto fail; > } > > - memcpy(rect->data[0], region->pbuf, region->buf_size); > - > if ((clut == &default_clut && ctx->compute_clut < 0) || ctx->compute_clut == 1) { > if (!region->has_computed_clut) { > compute_default_clut(ctx, region->computed_clut, rect, rect->w, rect->h); > @@ -1074,12 +1072,10 @@ static int dvbsub_parse_clut_segment(AVCodecContext *avctx, > clut = get_clut(ctx, clut_id); > > if (!clut) { > - clut = av_malloc(sizeof(*clut)); > + clut = av_memdup(&default_clut, sizeof(*clut)); > if (!clut) > return AVERROR(ENOMEM); > > - memcpy(clut, &default_clut, sizeof(*clut)); > - > clut->id = clut_id; > clut->version = -1; > > diff --git a/libavcodec/g723_1enc.c b/libavcodec/g723_1enc.c > index 2b3cccee09..2a8149b4cd 100644 > --- a/libavcodec/g723_1enc.c > +++ b/libavcodec/g723_1enc.c > @@ -1116,10 +1116,9 @@ static int g723_1_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, > HFParam hf[4]; > > /* duplicate input */ > - start = in = av_malloc(frame->nb_samples * sizeof(int16_t)); > + start = in = av_memdup(frame->data[0], frame->nb_samples * sizeof(int16_t)); > if (!in) > return AVERROR(ENOMEM); > - memcpy(in, frame->data[0], frame->nb_samples * sizeof(int16_t)); > > highpass_filter(in, &p->hpf_fir_mem, &p->hpf_iir_mem); > > diff --git a/libavformat/hdsenc.c b/libavformat/hdsenc.c > index e5353bac65..64d9f1413d 100644 > --- a/libavformat/hdsenc.c > +++ b/libavformat/hdsenc.c > @@ -93,19 +93,17 @@ static int parse_header(OutputStream *os, const uint8_t *buf, int buf_size) > if (os->nb_extra_packets >= FF_ARRAY_ELEMS(os->extra_packets)) > return AVERROR_INVALIDDATA; > os->extra_packet_sizes[os->nb_extra_packets] = size; > - os->extra_packets[os->nb_extra_packets] = av_malloc(size); > + os->extra_packets[os->nb_extra_packets] = av_memdup(buf, size); > if (!os->extra_packets[os->nb_extra_packets]) > return AVERROR(ENOMEM); > - memcpy(os->extra_packets[os->nb_extra_packets], buf, size); > os->nb_extra_packets++; > } else if (type == 0x12) { > if (os->metadata) > return AVERROR_INVALIDDATA; > os->metadata_size = size - 11 - 4; > - os->metadata = av_malloc(os->metadata_size); > + os->metadata = av_memdup(buf + 11, os->metadata_size); > if (!os->metadata) > return AVERROR(ENOMEM); > - memcpy(os->metadata, buf + 11, os->metadata_size); > } > buf += size; > buf_size -= size; > diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c > index 36ab7ab3af..2479cb6f7d 100644 > --- a/libavformat/mpegts.c > +++ b/libavformat/mpegts.c > @@ -938,10 +938,9 @@ static int mpegts_set_stream_info(AVStream *st, PESContext *pes, > // audio track - add a second stream for this > AVStream *sub_st; > // priv_data cannot be shared between streams > - PESContext *sub_pes = av_malloc(sizeof(*sub_pes)); > + PESContext *sub_pes = av_memdup(pes, sizeof(*sub_pes)); > if (!sub_pes) > return AVERROR(ENOMEM); > - memcpy(sub_pes, pes, sizeof(*sub_pes)); > > sub_st = avformat_new_stream(pes->stream, NULL); > if (!sub_st) { > diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c > index 77e8d301b2..e1ef510892 100644 > --- a/libavformat/oggparsevorbis.c > +++ b/libavformat/oggparsevorbis.c > @@ -320,10 +320,9 @@ static int vorbis_header(AVFormatContext *s, int idx) > return priv->vp ? 0 : AVERROR_INVALIDDATA; > > priv->len[pkt_type >> 1] = os->psize; > - priv->packet[pkt_type >> 1] = av_mallocz(os->psize); > + priv->packet[pkt_type >> 1] = av_memdup(os->buf + os->pstart, os->psize); > if (!priv->packet[pkt_type >> 1]) > return AVERROR(ENOMEM); > - memcpy(priv->packet[pkt_type >> 1], os->buf + os->pstart, os->psize); > if (os->buf[os->pstart] == 1) { > const uint8_t *p = os->buf + os->pstart + 7; /* skip "\001vorbis" tag */ > unsigned blocksize, bs0, bs1; > diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c > index a1aa969cad..abd448246d 100644 > --- a/libavformat/rtsp.c > +++ b/libavformat/rtsp.c > @@ -383,10 +383,9 @@ static void copy_default_source_addrs(struct RTSPSource **addrs, int count, > int i; > for (i = 0; i < count; i++) { > rtsp_src = addrs[i]; > - rtsp_src2 = av_malloc(sizeof(*rtsp_src2)); > + rtsp_src2 = av_memdup(rtsp_src, sizeof(*rtsp_src)); > if (!rtsp_src2) > continue; > - memcpy(rtsp_src2, rtsp_src, sizeof(*rtsp_src)); > dynarray_add(dest, dest_count, rtsp_src2); > } > } > diff --git a/libavutil/bprint.c b/libavutil/bprint.c > index a6849d7178..ea51d9b09c 100644 > --- a/libavutil/bprint.c > +++ b/libavutil/bprint.c > @@ -244,10 +244,8 @@ int av_bprint_finalize(AVBPrint *buf, char **ret_str) > str = buf->str; > buf->str = NULL; > } else { > - str = av_malloc(real_size); > - if (str) > - memcpy(str, buf->str, real_size); > - else > + str = av_memdup(buf->str, real_size); > + if (!str) > ret = AVERROR(ENOMEM); > } > *ret_str = str; > Will apply tonight unless there are objections. - Andreas
diff --git a/libavcodec/decode.c b/libavcodec/decode.c index c44724d150..52bf5dcd33 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -1104,12 +1104,10 @@ int ff_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt) avctx->sw_pix_fmt = fmt[n - 1]; } - choices = av_malloc_array(n + 1, sizeof(*choices)); + choices = av_memdup(fmt, (n + 1) * sizeof(*choices)); if (!choices) return AV_PIX_FMT_NONE; - memcpy(choices, fmt, (n + 1) * sizeof(*choices)); - for (;;) { // Remove the previous hwaccel, if there was one. hwaccel_uninit(avctx); diff --git a/libavcodec/dvbsubdec.c b/libavcodec/dvbsubdec.c index d192f3251d..81ccaf4c57 100644 --- a/libavcodec/dvbsubdec.c +++ b/libavcodec/dvbsubdec.c @@ -823,14 +823,12 @@ static int save_subtitle_set(AVCodecContext *avctx, AVSubtitle *sub, int *got_ou } memcpy(rect->data[1], clut_table, (1 << region->depth) * sizeof(*clut_table)); - rect->data[0] = av_malloc(region->buf_size); + rect->data[0] = av_memdup(region->pbuf, region->buf_size); if (!rect->data[0]) { ret = AVERROR(ENOMEM); goto fail; } - memcpy(rect->data[0], region->pbuf, region->buf_size); - if ((clut == &default_clut && ctx->compute_clut < 0) || ctx->compute_clut == 1) { if (!region->has_computed_clut) { compute_default_clut(ctx, region->computed_clut, rect, rect->w, rect->h); @@ -1074,12 +1072,10 @@ static int dvbsub_parse_clut_segment(AVCodecContext *avctx, clut = get_clut(ctx, clut_id); if (!clut) { - clut = av_malloc(sizeof(*clut)); + clut = av_memdup(&default_clut, sizeof(*clut)); if (!clut) return AVERROR(ENOMEM); - memcpy(clut, &default_clut, sizeof(*clut)); - clut->id = clut_id; clut->version = -1; diff --git a/libavcodec/g723_1enc.c b/libavcodec/g723_1enc.c index 2b3cccee09..2a8149b4cd 100644 --- a/libavcodec/g723_1enc.c +++ b/libavcodec/g723_1enc.c @@ -1116,10 +1116,9 @@ static int g723_1_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, HFParam hf[4]; /* duplicate input */ - start = in = av_malloc(frame->nb_samples * sizeof(int16_t)); + start = in = av_memdup(frame->data[0], frame->nb_samples * sizeof(int16_t)); if (!in) return AVERROR(ENOMEM); - memcpy(in, frame->data[0], frame->nb_samples * sizeof(int16_t)); highpass_filter(in, &p->hpf_fir_mem, &p->hpf_iir_mem); diff --git a/libavformat/hdsenc.c b/libavformat/hdsenc.c index e5353bac65..64d9f1413d 100644 --- a/libavformat/hdsenc.c +++ b/libavformat/hdsenc.c @@ -93,19 +93,17 @@ static int parse_header(OutputStream *os, const uint8_t *buf, int buf_size) if (os->nb_extra_packets >= FF_ARRAY_ELEMS(os->extra_packets)) return AVERROR_INVALIDDATA; os->extra_packet_sizes[os->nb_extra_packets] = size; - os->extra_packets[os->nb_extra_packets] = av_malloc(size); + os->extra_packets[os->nb_extra_packets] = av_memdup(buf, size); if (!os->extra_packets[os->nb_extra_packets]) return AVERROR(ENOMEM); - memcpy(os->extra_packets[os->nb_extra_packets], buf, size); os->nb_extra_packets++; } else if (type == 0x12) { if (os->metadata) return AVERROR_INVALIDDATA; os->metadata_size = size - 11 - 4; - os->metadata = av_malloc(os->metadata_size); + os->metadata = av_memdup(buf + 11, os->metadata_size); if (!os->metadata) return AVERROR(ENOMEM); - memcpy(os->metadata, buf + 11, os->metadata_size); } buf += size; buf_size -= size; diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index 36ab7ab3af..2479cb6f7d 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -938,10 +938,9 @@ static int mpegts_set_stream_info(AVStream *st, PESContext *pes, // audio track - add a second stream for this AVStream *sub_st; // priv_data cannot be shared between streams - PESContext *sub_pes = av_malloc(sizeof(*sub_pes)); + PESContext *sub_pes = av_memdup(pes, sizeof(*sub_pes)); if (!sub_pes) return AVERROR(ENOMEM); - memcpy(sub_pes, pes, sizeof(*sub_pes)); sub_st = avformat_new_stream(pes->stream, NULL); if (!sub_st) { diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c index 77e8d301b2..e1ef510892 100644 --- a/libavformat/oggparsevorbis.c +++ b/libavformat/oggparsevorbis.c @@ -320,10 +320,9 @@ static int vorbis_header(AVFormatContext *s, int idx) return priv->vp ? 0 : AVERROR_INVALIDDATA; priv->len[pkt_type >> 1] = os->psize; - priv->packet[pkt_type >> 1] = av_mallocz(os->psize); + priv->packet[pkt_type >> 1] = av_memdup(os->buf + os->pstart, os->psize); if (!priv->packet[pkt_type >> 1]) return AVERROR(ENOMEM); - memcpy(priv->packet[pkt_type >> 1], os->buf + os->pstart, os->psize); if (os->buf[os->pstart] == 1) { const uint8_t *p = os->buf + os->pstart + 7; /* skip "\001vorbis" tag */ unsigned blocksize, bs0, bs1; diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index a1aa969cad..abd448246d 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -383,10 +383,9 @@ static void copy_default_source_addrs(struct RTSPSource **addrs, int count, int i; for (i = 0; i < count; i++) { rtsp_src = addrs[i]; - rtsp_src2 = av_malloc(sizeof(*rtsp_src2)); + rtsp_src2 = av_memdup(rtsp_src, sizeof(*rtsp_src)); if (!rtsp_src2) continue; - memcpy(rtsp_src2, rtsp_src, sizeof(*rtsp_src)); dynarray_add(dest, dest_count, rtsp_src2); } } diff --git a/libavutil/bprint.c b/libavutil/bprint.c index a6849d7178..ea51d9b09c 100644 --- a/libavutil/bprint.c +++ b/libavutil/bprint.c @@ -244,10 +244,8 @@ int av_bprint_finalize(AVBPrint *buf, char **ret_str) str = buf->str; buf->str = NULL; } else { - str = av_malloc(real_size); - if (str) - memcpy(str, buf->str, real_size); - else + str = av_memdup(buf->str, real_size); + if (!str) ret = AVERROR(ENOMEM); } *ret_str = str;
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavcodec/decode.c | 4 +--- libavcodec/dvbsubdec.c | 8 ++------ libavcodec/g723_1enc.c | 3 +-- libavformat/hdsenc.c | 6 ++---- libavformat/mpegts.c | 3 +-- libavformat/oggparsevorbis.c | 3 +-- libavformat/rtsp.c | 3 +-- libavutil/bprint.c | 6 ++---- 8 files changed, 11 insertions(+), 25 deletions(-)