From: Markus Armbruster Date: Sun, 27 Dec 2020 11:43:19 +0000 (+0100) Subject: bomb launch interdiction: Fix crash on bombs missing target X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=e312e4f8d6eea49423722c87b7f368e42b1086be bomb launch interdiction: Fix crash on bombs missing target plane damage() prints @noisy with snprintf() even when it's null. It doesn't actually use the output then. Some systems (GNU, Windows) deal gracefully with printing null strings, others crash. @noisy is null when bombers or missiles miss and do collateral damage. Affects bomb, launch, and interdiction missions. Broken in commit 820d755e5 "subs: Change pln_damage()'s parameter noisy to string prefix", v4.3.33. Fix by guarding the snprintf(). Signed-off-by: Markus Armbruster --- diff --git a/src/lib/subs/plnsub.c b/src/lib/subs/plnsub.c index 28653ea68..29c1f9af0 100644 --- a/src/lib/subs/plnsub.c +++ b/src/lib/subs/plnsub.c @@ -30,7 +30,7 @@ * Dave Pare, 1986 * Ken Stevens, 1995 * Steve McClure, 1998-2000 - * Markus Armbruster, 2004-2016 + * Markus Armbruster, 2004-2020 */ #include @@ -1052,7 +1052,7 @@ pln_damage(struct plnstr *pp, char type, char *noisy) aim = 100 - aim; } - len = snprintf(buf, sizeof(buf), "%s", noisy); + len = noisy ? snprintf(buf, sizeof(buf), "%s", noisy) : 0; while (i--) { if (noisy) { if (len > 75) {