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;
}