[FFmpeg-devel] [PATCH] avformat/argo_asf: Use memcpy to copy string without its NUL
Zane van Iperen
zane at zanevaniperen.com
Sun Sep 26 08:14:22 EEST 2021
On 26/9/21 1:09 pm, Andreas Rheinhardt wrote:
> This avoids a -Wstringop-truncation warning from GCC which takes
> issue with the fact that the destination might not be NUL terminated.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---
> libavformat/argo_asf.c | 20 +++++++-------------
> 1 file changed, 7 insertions(+), 13 deletions(-)
>
> diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c
> index 5adafb7230..0ef970df8a 100644
> --- a/libavformat/argo_asf.c
> +++ b/libavformat/argo_asf.c
> @@ -356,25 +356,19 @@ static int argo_asf_write_header(AVFormatContext *s)
> .num_chunks = 1,
> .chunk_offset = ASF_FILE_HEADER_SIZE
> };
> + const char *name = ctx->name, *end;
> + size_t len;
>
> /*
> * If the user specified a name, use it as is. Otherwise take the
> * basename and lop off the extension (if any).
> */
> - if (ctx->name) {
> - strncpy(fhdr.name, ctx->name, sizeof(fhdr.name));
> - } else {
> - const char *start = av_basename(s->url);
> - const char *end = strrchr(start, '.');
> - size_t len;
> -
> - if (end)
> - len = end - start;
> - else
> - len = strlen(start);
> + if (name || !(end = strrchr(name = av_basename(s->url), '.'))) {
> + len = strlen(name);
> + } else
> + len = end - name;
>
> - memcpy(fhdr.name, start, FFMIN(len, sizeof(fhdr.name)));
> - }
> + memcpy(fhdr.name, name, FFMIN(len, sizeof(fhdr.name)));
>
Minor formatting nits:
* The first statement has braces, the second doesn't.
* A set of parentheses around "name = av_basename(s->url)" would make things clearer.
Otherwise, lgtm.
Zane
More information about the ffmpeg-devel
mailing list