String safety (#1548)

* Array size UB fixes

* Fix ShieldD

* Remove (almost) all unsafe strcpy calls

Bunch of macros. C arrays are easy enough and just need a different call. For various cases where a char* is passed around bare, I've made a TEXT_SPAN macro that can store a length too for bounds checking.

* Move crash handling in safe string operations to separate TU

* strcat safe version

* sprintf made safe too

* Fix compile
This commit is contained in:
Pieter-Jan Briers
2026-05-24 18:43:00 +02:00
committed by GitHub
parent af162bbd0a
commit a6376368ee
100 changed files with 781 additions and 546 deletions
+4 -2
View File
@@ -15,6 +15,8 @@
#include "Z2AudioLib/Z2Instances.h"
#include <cstring>
#include "dusk/string.hpp"
static int l_bmdData[4][2] = {
{14, 1}, {26, 2},
{25, 2}, {3, 4},
@@ -1336,8 +1338,8 @@ int daNpc_Hanjo_c::cutAppearHawker(int param_1) {
home.angle.y += 0x8000;
setAngle(home.angle.y);
initTalk(0xcf, NULL);
strcpy(acStack_98, l_evtList[9].eventName);
strcat(acStack_98, "@");
SAFE_STRCPY(acStack_98, l_evtList[9].eventName);
SAFE_STRCAT(acStack_98, "@");
dComIfGp_getEvent()->setSkipZev(this, acStack_98);
dComIfGp_getEvent()->onSkipFade();
dComIfGp_getVibration().StartShock( 9, 15, cXyz(0.0f, 1.0f, 0.0f));