From 9f9ae77895c816475866a88d84567cfadf1b42cf Mon Sep 17 00:00:00 2001 From: Dianne Skoll Date: Mon, 9 Dec 2024 20:03:15 -0500 Subject: [PATCH] Bound-check GetErr --- src/err.h | 6 ++++++ src/main.c | 7 +++---- src/protos.h | 1 + src/trans.c | 10 ++++++++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/err.h b/src/err.h index 611e9c03..57c423bf 100644 --- a/src/err.h +++ b/src/err.h @@ -255,3 +255,9 @@ EXTERN char *ErrMsg[] #endif /* MK_GLOBALS */ ; #endif /* L_ERR_OVERRIDE */ + +EXTERN int NumErrs +#ifdef MK_GLOBALS += sizeof(ErrMsg) / sizeof(ErrMsg[0]) +#endif +; diff --git a/src/main.c b/src/main.c index 47b9f6ab..40d514f4 100644 --- a/src/main.c +++ b/src/main.c @@ -2028,9 +2028,8 @@ int GetOnceDate(void) char const *GetErr(int r) { - char const *s = GetTranslatedString(ErrMsg[r]); - if (s) { - return s; + if (r < 0 || r >= NumErrs) { + r = E_SWERR; } - return ErrMsg[r]; + return t(ErrMsg[r]); } diff --git a/src/protos.h b/src/protos.h index 05dcf134..590ed43a 100644 --- a/src/protos.h +++ b/src/protos.h @@ -269,3 +269,4 @@ void InitUserFunctions(void); void InitTranslationTable(void); char const *GetTranslatedString(char const *orig); char const *GetErr(int r); +char const *t(char const *s); diff --git a/src/trans.c b/src/trans.c index 6b11cf6e..f5ea5006 100644 --- a/src/trans.c +++ b/src/trans.c @@ -212,6 +212,15 @@ GetTranslatedString(char const *orig) return item->translated; } +char const *t(char const *orig) +{ + char const *n = GetTranslatedString(orig); + if (n) { + return n; + } + return orig; +} + int DoTranslate(ParsePtr p) { @@ -272,3 +281,4 @@ get_translation_hash_stats(int *total, int *maxlen, double *avglen) *maxlen = s.max_len; *avglen = s.avg_len; } +