<div dir="ltr"><div dir="ltr"><div>From 0e0ce486799929d45ee35a30797c21afdafe99b7 Mon Sep 17 00:00:00 2001</div><div>From: Vittorio Giovara <<a href="mailto:vittorio.giovara@gmail.com">vittorio.giovara@gmail.com</a>></div><div>Date: Tue, 15 Oct 2024 20:11:01 +0530</div><div>Subject: [PATCH 4/4] Limit buffer size operation for unsafe sprintf() calls</div><div><br></div><div>This function does not impose any size limitation to what it writes to,</div><div>which may lead to stack buffer overflows if there is no validation on</div><div>the size of the input. Use snprintf() instead.</div><div>---</div><div> source/common/common.cpp       | 4 ++--</div><div> source/encoder/ratecontrol.cpp | 4 ++--</div><div> source/profile/vtune/vtune.cpp | 2 +-</div><div> source/x265cli.cpp             | 2 +-</div><div> 4 files changed, 6 insertions(+), 6 deletions(-)</div><div><br></div><div>diff --git a/source/common/common.cpp b/source/common/common.cpp</div><div>index b33248782..4925d59a9 100644</div><div>--- a/source/common/common.cpp</div><div>+++ b/source/common/common.cpp</div><div>@@ -133,7 +133,7 @@ void general_log(const x265_param* param, const char* caller, int level, const c</div><div>     }</div><div> </div><div>     if (caller)</div><div>-        p += sprintf(buffer, "%-4s [%s]: ", caller, log_level);</div><div>+        p += snprintf(buffer, sizeof(buffer), "%-4s [%s]: ", caller, log_level);</div><div>     va_list arg;</div><div>     va_start(arg, fmt);</div><div>     vsnprintf(buffer + p, bufferSize - p, fmt, arg);</div><div>@@ -175,7 +175,7 @@ void general_log_file(const x265_param* param, const char* caller, int level, co</div><div>     }</div><div> </div><div>     if (caller)</div><div>-        p += sprintf(buffer, "%-4s [%s]: ", caller, log_level);</div><div>+        p += snprintf(buffer, sizeof(buffer), "%-4s [%s]: ", caller, log_level);</div><div>     va_list arg;</div><div>     va_start(arg, fmt);</div><div>     vsnprintf(buffer + p, bufferSize - p, fmt, arg);</div><div>diff --git a/source/encoder/ratecontrol.cpp b/source/encoder/ratecontrol.cpp</div><div>index 1e4555676..50adefc19 100644</div><div>--- a/source/encoder/ratecontrol.cpp</div><div>+++ b/source/encoder/ratecontrol.cpp</div><div>@@ -3250,8 +3250,8 @@ int RateControl::writeRateControlFrameStats(Frame* curFrame, RateControlEntry* r</div><div> </div><div>         for (i = 0; i < num; i++)</div><div>         {</div><div>-            sprintf(deltaPOC, "%s%d~", deltaPOC, rpsWriter->deltaPOC[i]);</div><div>-            sprintf(bUsed, "%s%d~", bUsed, rpsWriter->bUsed[i]);</div><div>+            snprintf(deltaPOC, sizeof(deltaPOC), "%s%d~", deltaPOC, rpsWriter->deltaPOC[i]);</div><div>+            snprintf(bUsed, sizeof(bUsed), "%s%d~", bUsed, rpsWriter->bUsed[i]);</div><div>         }</div><div> </div><div>         if (fprintf(m_statFileOut,</div><div>diff --git a/source/profile/vtune/vtune.cpp b/source/profile/vtune/vtune.cpp</div><div>index 1eb347cce..4545ab50f 100644</div><div>--- a/source/profile/vtune/vtune.cpp</div><div>+++ b/source/profile/vtune/vtune.cpp</div><div>@@ -51,7 +51,7 @@ void vtuneInit()</div><div> void vtuneSetThreadName(const char *name, int id)</div><div> {</div><div>     char threadname[128];</div><div>-    sprintf(threadname, "%s %d", name, id);</div><div>+    snprintf(threadname, sizeof(threadname), "%s %d", name, id);</div><div>     __itt_thread_set_name(threadname);</div><div> }</div><div> </div><div>diff --git a/source/x265cli.cpp b/source/x265cli.cpp</div><div>index 2593e1ee5..790df9a88 100755</div><div>--- a/source/x265cli.cpp</div><div>+++ b/source/x265cli.cpp</div><div>@@ -981,7 +981,7 @@ namespace X265_NS {</div><div>         if (param->logLevel >= X265_LOG_INFO)</div><div>         {</div><div>             char buf[128];</div><div>-            int p = sprintf(buf, "%dx%d fps %d/%d %sp%d", param->sourceWidth, param->sourceHeight,</div><div>+            int p = snprintf(buf, sizeof(buf), "%dx%d fps %d/%d %sp%d", param->sourceWidth, param->sourceHeight,</div><div>                 param->fpsNum, param->fpsDenom, x265_source_csp_names[param->internalCsp], info[0].depth);</div><div> </div><div>             int width, height;</div><div>-- </div><div>2.36.0.windows.1</div><div><br></div><div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><b>__________________________</b></div><div><b>Karam Singh</b></div><div><b>Ph.D. IIT Guwahati</b></div><div><font size="1">Senior Software (Video Coding) Engineer  </font></div><div><font size="1">Mobile: +91 8011279030</font></div><div><font size="1">Block 9A, 6th floor, DLF Cyber City</font></div><div><font size="1">Manapakkam, Chennai 600 089</font></div></div></div></div></div></div>