Hi Zane, sorry for this late remark.
On 2020-08-09 23:45 +0000, Zane van Iperen wrote: > Only when the user hasn't manually specified one. > Matches the original files more closely. > > Signed-off-by: Zane van Iperen <z...@zanevaniperen.com> > --- > libavformat/argo_asf.c | 20 +++++++++++++++++--- > 1 file changed, 17 insertions(+), 3 deletions(-) > > diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c > index 577b9d9c01..37ad2bf5e9 100644 > --- a/libavformat/argo_asf.c > +++ b/libavformat/argo_asf.c > @@ -329,10 +329,24 @@ static int argo_asf_write_header(AVFormatContext *s) > fhdr.version_minor = (uint16_t)ctx->version_minor; > fhdr.num_chunks = 1; > fhdr.chunk_offset = ASF_FILE_HEADER_SIZE; > - if (ctx->name) > + /* > + * 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 > - strncpy(fhdr.name, av_basename(s->url), 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); > + > + memcpy(fhdr.name, start, FFMIN(len, sizeof(fhdr.name))); > + } How is one supposed to make sense of the name field when reading it? It's declared on the stack further above in this function: ArgoASFFileHeader fhdr; And I can spot no further intitialization or a count field. Later there is a call argo_asf_write_file_header(&fhdr, s->pb); So I guess my question is: should remaning bytes be zeroed like in the if clause? If yes, then that's missing from the else clause. And the second question is: If a full size name is written, is it allowed to have no zero termination? [...] Alexander _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".