diff mbox series

[FFmpeg-devel,v3] avformat/hls: use av_strlcopy instead of strncpy

Message ID 20231123153159.1376918-1-leo.izen@gmail.com
State Accepted
Commit 1f56bfc9869b05df7bf15705c3f7b137dece1bd6
Headers show
Series [FFmpeg-devel,v3] avformat/hls: use av_strlcopy instead of strncpy | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Leo Izen Nov. 23, 2023, 3:31 p.m. UTC
Avoids a -Wstringop-truncation warning by using av_strlcopy instead of
strncpy. Additionally, prints a warning to the log context if this
truncation occurred.

Signed-off-by: Leo Izen <leo.izen@gmail.com>
---
 libavformat/hls.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

Comments

Leo Izen Dec. 7, 2023, 4:55 p.m. UTC | #1
On 11/23/23 10:31, Leo Izen wrote:
> Avoids a -Wstringop-truncation warning by using av_strlcopy instead of
> strncpy. Additionally, prints a warning to the log context if this
> truncation occurred.
> 
> Signed-off-by: Leo Izen <leo.izen@gmail.com>
> ---

Bump, thanks.

- Leo Izen (Traneptora)
diff mbox series

Patch

diff --git a/libavformat/hls.c b/libavformat/hls.c
index f5f549b24d..61e2d67588 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -540,11 +540,16 @@  static struct rendition *new_rendition(HLSContext *c, struct rendition_info *inf
     }
 
     if (info->assoc_language[0]) {
-        int langlen = strlen(rend->language);
+        size_t langlen = strlen(rend->language);
         if (langlen < sizeof(rend->language) - 3) {
+            size_t assoc_len;
             rend->language[langlen] = ',';
-            strncpy(rend->language + langlen + 1, info->assoc_language,
-                    sizeof(rend->language) - langlen - 2);
+            assoc_len = av_strlcpy(rend->language + langlen + 1,
+                                   info->assoc_language,
+                                   sizeof(rend->language) - langlen - 1);
+            if (langlen + assoc_len + 2 > sizeof(rend->language)) // truncation occurred
+                av_log(c->ctx, AV_LOG_WARNING, "Truncated rendition language: %s\n",
+                       info->assoc_language);
         }
     }