Avoid unsafe buffer usage in fpdf_sysfontinfo.cpp

Avoid allocs and use string storage directly.

Bug: 42271176
Change-Id: I92b25f7a0c6714c6d832d0e4e306a09bae9980dc
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/120631
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Thomas Sepez <tsepez@google.com>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_sysfontinfo.cpp b/fpdfsdk/fpdf_sysfontinfo.cpp
index 265a70b..8302392 100644
--- a/fpdfsdk/fpdf_sysfontinfo.cpp
+++ b/fpdfsdk/fpdf_sysfontinfo.cpp
@@ -9,6 +9,7 @@
 #include <stddef.h>
 
 #include <memory>
+#include <utility>
 
 #include "core/fxcrt/compiler_specific.h"
 #include "core/fxcrt/fx_codepage.h"
@@ -124,10 +125,11 @@
     unsigned long size = m_pInfo->GetFaceName(m_pInfo, hFont, nullptr, 0);
     if (size == 0)
       return false;
-    char* buffer = FX_Alloc(char, size);
-    size = m_pInfo->GetFaceName(m_pInfo, hFont, buffer, size);
-    *name = UNSAFE_TODO(ByteString::Create(buffer, size));
-    FX_Free(buffer);
+    ByteString result;
+    auto result_span = result.GetBuffer(size);
+    size = m_pInfo->GetFaceName(m_pInfo, hFont, result_span.data(), size);
+    result.ReleaseBuffer(size);
+    *name = std::move(result);
     return true;
   }