Message ID | 20211012110224.639056-1-zane@zanevaniperen.com |
---|---|
State | Accepted |
Commit | 20fa838da5a1cce23cb571781fc7fae4b18146ae |
Headers | show |
Series | [FFmpeg-devel,v2,1/3] avformat/argo_asf: cleanup and NULL-terminate name field in header | 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 |
Will apply tomorrow if no objections. Zane On 12/10/21 9:02 pm, Zane van Iperen wrote: > Signed-off-by: Zane van Iperen <zane@zanevaniperen.com> > --- > libavformat/argo_asf.c | 8 ++++---- > libavformat/argo_asf.h | 3 ++- > 2 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c > index 7e759c7c0c..acf30839b9 100644 > --- a/libavformat/argo_asf.c > +++ b/libavformat/argo_asf.c > @@ -52,8 +52,8 @@ void ff_argo_asf_parse_file_header(ArgoASFFileHeader *hdr, const uint8_t *buf) > hdr->version_minor = AV_RL16(buf + 6); > hdr->num_chunks = AV_RL32(buf + 8); > hdr->chunk_offset = AV_RL32(buf + 12); > - for (int i = 0; i < FF_ARRAY_ELEMS(hdr->name); i++) > - hdr->name[i] = AV_RL8(buf + 16 + i); > + memcpy(hdr->name, buf + 16, ASF_NAME_SIZE); > + hdr->name[ASF_NAME_SIZE] = '\0'; > } > > int ff_argo_asf_validate_file_header(AVFormatContext *s, const ArgoASFFileHeader *hdr) > @@ -331,7 +331,7 @@ static void argo_asf_write_file_header(const ArgoASFFileHeader *fhdr, AVIOContex > avio_wl16( pb, fhdr->version_minor); > avio_wl32( pb, fhdr->num_chunks); > avio_wl32( pb, fhdr->chunk_offset); > - avio_write(pb, fhdr->name, sizeof(fhdr->name)); > + avio_write(pb, fhdr->name, ASF_NAME_SIZE); > } > > static void argo_asf_write_chunk_header(const ArgoASFChunkHeader *ckhdr, AVIOContext *pb) > @@ -368,7 +368,7 @@ static int argo_asf_write_header(AVFormatContext *s) > } else { > len = end - name; > } > - memcpy(fhdr.name, name, FFMIN(len, sizeof(fhdr.name))); > + memcpy(fhdr.name, name, FFMIN(len, ASF_NAME_SIZE)); > > chdr.num_blocks = 0; > chdr.num_samples = ASF_SAMPLE_COUNT; > diff --git a/libavformat/argo_asf.h b/libavformat/argo_asf.h > index e65125fb79..1fab31a90b 100644 > --- a/libavformat/argo_asf.h > +++ b/libavformat/argo_asf.h > @@ -33,6 +33,7 @@ > #define ASF_CHUNK_HEADER_SIZE 20 > #define ASF_SAMPLE_COUNT 32 > #define ASF_MIN_BUFFER_SIZE FFMAX(ASF_FILE_HEADER_SIZE, ASF_CHUNK_HEADER_SIZE) > +#define ASF_NAME_SIZE 8 > > typedef struct ArgoASFFileHeader { > uint32_t magic; /*< Magic Number, {'A', 'S', 'F', '\0'} */ > @@ -40,7 +41,7 @@ typedef struct ArgoASFFileHeader { > uint16_t version_minor; /*< File Minor Version. */ > uint32_t num_chunks; /*< No. chunks in the file. */ > uint32_t chunk_offset; /*< Offset to the first chunk from the start of the file. */ > - int8_t name[8]; /*< Name. */ > + char name[ASF_NAME_SIZE + 1]; /*< Name, +1 for NULL-terminator. */ > } ArgoASFFileHeader; > > typedef struct ArgoASFChunkHeader { >
> On Oct 12, 2021, at 7:02 PM, Zane van Iperen <zane@zanevaniperen.com> wrote: > > Signed-off-by: Zane van Iperen <zane@zanevaniperen.com> > --- > libavformat/argo_asf.c | 8 ++++---- > libavformat/argo_asf.h | 3 ++- > 2 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c > index 7e759c7c0c..acf30839b9 100644 > --- a/libavformat/argo_asf.c > +++ b/libavformat/argo_asf.c > @@ -52,8 +52,8 @@ void ff_argo_asf_parse_file_header(ArgoASFFileHeader *hdr, const uint8_t *buf) > hdr->version_minor = AV_RL16(buf + 6); > hdr->num_chunks = AV_RL32(buf + 8); > hdr->chunk_offset = AV_RL32(buf + 12); > - for (int i = 0; i < FF_ARRAY_ELEMS(hdr->name); i++) > - hdr->name[i] = AV_RL8(buf + 16 + i); > + memcpy(hdr->name, buf + 16, ASF_NAME_SIZE); > + hdr->name[ASF_NAME_SIZE] = '\0'; > } > > int ff_argo_asf_validate_file_header(AVFormatContext *s, const ArgoASFFileHeader *hdr) > @@ -331,7 +331,7 @@ static void argo_asf_write_file_header(const ArgoASFFileHeader *fhdr, AVIOContex > avio_wl16( pb, fhdr->version_minor); > avio_wl32( pb, fhdr->num_chunks); > avio_wl32( pb, fhdr->chunk_offset); > - avio_write(pb, fhdr->name, sizeof(fhdr->name)); > + avio_write(pb, fhdr->name, ASF_NAME_SIZE); > } > > static void argo_asf_write_chunk_header(const ArgoASFChunkHeader *ckhdr, AVIOContext *pb) > @@ -368,7 +368,7 @@ static int argo_asf_write_header(AVFormatContext *s) > } else { > len = end - name; > } > - memcpy(fhdr.name, name, FFMIN(len, sizeof(fhdr.name))); > + memcpy(fhdr.name, name, FFMIN(len, ASF_NAME_SIZE)); > > chdr.num_blocks = 0; > chdr.num_samples = ASF_SAMPLE_COUNT; > diff --git a/libavformat/argo_asf.h b/libavformat/argo_asf.h > index e65125fb79..1fab31a90b 100644 > --- a/libavformat/argo_asf.h > +++ b/libavformat/argo_asf.h > @@ -33,6 +33,7 @@ > #define ASF_CHUNK_HEADER_SIZE 20 > #define ASF_SAMPLE_COUNT 32 > #define ASF_MIN_BUFFER_SIZE FFMAX(ASF_FILE_HEADER_SIZE, ASF_CHUNK_HEADER_SIZE) > +#define ASF_NAME_SIZE 8 > > typedef struct ArgoASFFileHeader { > uint32_t magic; /*< Magic Number, {'A', 'S', 'F', '\0'} */ > @@ -40,7 +41,7 @@ typedef struct ArgoASFFileHeader { > uint16_t version_minor; /*< File Minor Version. */ > uint32_t num_chunks; /*< No. chunks in the file. */ > uint32_t chunk_offset; /*< Offset to the first chunk from the start of the file. */ > - int8_t name[8]; /*< Name. */ > + char name[ASF_NAME_SIZE + 1]; /*< Name, +1 for NULL-terminator. */ > } ArgoASFFileHeader; I failed to see why null-terminator is needed from the commit message or from the source code. > > typedef struct ArgoASFChunkHeader { > -- > 2.31.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >
On 14/10/21 10:11 pm, "zhilizhao(赵志立)" wrote: >> typedef struct ArgoASFFileHeader { >> uint32_t magic; /*< Magic Number, {'A', 'S', 'F', '\0'} */ >> @@ -40,7 +41,7 @@ typedef struct ArgoASFFileHeader { >> uint16_t version_minor; /*< File Minor Version. */ >> uint32_t num_chunks; /*< No. chunks in the file. */ >> uint32_t chunk_offset; /*< Offset to the first chunk from the start of the file. */ >> - int8_t name[8]; /*< Name. */ >> + char name[ASF_NAME_SIZE + 1]; /*< Name, +1 for NULL-terminator. */ >> } ArgoASFFileHeader; > > > I failed to see why null-terminator is needed from the commit message or from the source code. > See https://ffmpeg.org/pipermail/ffmpeg-devel/2021-October/286939.html
> On Oct 14, 2021, at 8:25 PM, Zane van Iperen <zane@zanevaniperen.com> wrote: > > > > On 14/10/21 10:11 pm, "zhilizhao(赵志立)" wrote: > >>> typedef struct ArgoASFFileHeader { >>> uint32_t magic; /*< Magic Number, {'A', 'S', 'F', '\0'} */ >>> @@ -40,7 +41,7 @@ typedef struct ArgoASFFileHeader { >>> uint16_t version_minor; /*< File Minor Version. */ >>> uint32_t num_chunks; /*< No. chunks in the file. */ >>> uint32_t chunk_offset; /*< Offset to the first chunk from the start of the file. */ >>> - int8_t name[8]; /*< Name. */ >>> + char name[ASF_NAME_SIZE + 1]; /*< Name, +1 for NULL-terminator. */ >>> } ArgoASFFileHeader; >> I failed to see why null-terminator is needed from the commit message or from the source code. > > See https://ffmpeg.org/pipermail/ffmpeg-devel/2021-October/286939.html Sorry for the noise, email client doesn’t show the patch set together. Add some description will be helpful when reading the patch alone. > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
On 14/10/21 10:45 pm, "zhilizhao(赵志立)" wrote: >>>> } ArgoASFFileHeader; >>> I failed to see why null-terminator is needed from the commit message or from the source code. >> >> See https://ffmpeg.org/pipermail/ffmpeg-devel/2021-October/286939.html > > Sorry for the noise, email client doesn’t show the patch set together. > Add some description will be helpful when reading the patch alone. > No worries, will do before I push.
diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c index 7e759c7c0c..acf30839b9 100644 --- a/libavformat/argo_asf.c +++ b/libavformat/argo_asf.c @@ -52,8 +52,8 @@ void ff_argo_asf_parse_file_header(ArgoASFFileHeader *hdr, const uint8_t *buf) hdr->version_minor = AV_RL16(buf + 6); hdr->num_chunks = AV_RL32(buf + 8); hdr->chunk_offset = AV_RL32(buf + 12); - for (int i = 0; i < FF_ARRAY_ELEMS(hdr->name); i++) - hdr->name[i] = AV_RL8(buf + 16 + i); + memcpy(hdr->name, buf + 16, ASF_NAME_SIZE); + hdr->name[ASF_NAME_SIZE] = '\0'; } int ff_argo_asf_validate_file_header(AVFormatContext *s, const ArgoASFFileHeader *hdr) @@ -331,7 +331,7 @@ static void argo_asf_write_file_header(const ArgoASFFileHeader *fhdr, AVIOContex avio_wl16( pb, fhdr->version_minor); avio_wl32( pb, fhdr->num_chunks); avio_wl32( pb, fhdr->chunk_offset); - avio_write(pb, fhdr->name, sizeof(fhdr->name)); + avio_write(pb, fhdr->name, ASF_NAME_SIZE); } static void argo_asf_write_chunk_header(const ArgoASFChunkHeader *ckhdr, AVIOContext *pb) @@ -368,7 +368,7 @@ static int argo_asf_write_header(AVFormatContext *s) } else { len = end - name; } - memcpy(fhdr.name, name, FFMIN(len, sizeof(fhdr.name))); + memcpy(fhdr.name, name, FFMIN(len, ASF_NAME_SIZE)); chdr.num_blocks = 0; chdr.num_samples = ASF_SAMPLE_COUNT; diff --git a/libavformat/argo_asf.h b/libavformat/argo_asf.h index e65125fb79..1fab31a90b 100644 --- a/libavformat/argo_asf.h +++ b/libavformat/argo_asf.h @@ -33,6 +33,7 @@ #define ASF_CHUNK_HEADER_SIZE 20 #define ASF_SAMPLE_COUNT 32 #define ASF_MIN_BUFFER_SIZE FFMAX(ASF_FILE_HEADER_SIZE, ASF_CHUNK_HEADER_SIZE) +#define ASF_NAME_SIZE 8 typedef struct ArgoASFFileHeader { uint32_t magic; /*< Magic Number, {'A', 'S', 'F', '\0'} */ @@ -40,7 +41,7 @@ typedef struct ArgoASFFileHeader { uint16_t version_minor; /*< File Minor Version. */ uint32_t num_chunks; /*< No. chunks in the file. */ uint32_t chunk_offset; /*< Offset to the first chunk from the start of the file. */ - int8_t name[8]; /*< Name. */ + char name[ASF_NAME_SIZE + 1]; /*< Name, +1 for NULL-terminator. */ } ArgoASFFileHeader; typedef struct ArgoASFChunkHeader {
Signed-off-by: Zane van Iperen <zane@zanevaniperen.com> --- libavformat/argo_asf.c | 8 ++++---- libavformat/argo_asf.h | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-)