[libunwind] [libunwind] remove unnecessary strcpy dependency (PR #72043)

Michael Kenzel via cfe-commits cfe-commits at lists.llvm.org
Sat Nov 11 17:59:40 PST 2023


https://github.com/michael-kenzel created https://github.com/llvm/llvm-project/pull/72043

libunwind uses a minimum set of necessary standard library functions, basically just `memset` and `memcpy`. There is a single use of `strcpy` to copy the bytes `"CLNGUNW"` into a `uint64_t` object. This is both an arguably odd use of the `strcpy` function as well as it unnecessarily widens the set of library functions that must be available to build libunwind, which can be an obstacle in baremetal scenarios. This change simply replaces this one `strcpy` with the more fundamental `memcpy`.

>From 63b201389da0e3efce2636cda47b9680869b512e Mon Sep 17 00:00:00 2001
From: Michael Kenzel <michael.kenzel at gmail.com>
Date: Sun, 12 Nov 2023 02:46:15 +0100
Subject: [PATCH] [libunwind] remove unnecessary strcpy dependency

---
 libunwind/src/UnwindLevel1-gcc-ext.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libunwind/src/UnwindLevel1-gcc-ext.c b/libunwind/src/UnwindLevel1-gcc-ext.c
index d343f4e6e9cc837..32c872ffade1fd0 100644
--- a/libunwind/src/UnwindLevel1-gcc-ext.c
+++ b/libunwind/src/UnwindLevel1-gcc-ext.c
@@ -143,7 +143,7 @@ _Unwind_Backtrace(_Unwind_Trace_Fn callback, void *ref) {
   // Create a mock exception object for force unwinding.
   _Unwind_Exception ex;
   memset(&ex, '\0', sizeof(ex));
-  strcpy((char *)&ex.exception_class, "CLNGUNW");
+  memcpy(&ex.exception_class, "CLNGUNW", sizeof(ex.exception_class));
 #endif
 
   // walk each frame



More information about the cfe-commits mailing list