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 <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2020-12-27 12:43:19 +01:00
parent 77d3da4f09
commit e312e4f8d6

View file

@ -30,7 +30,7 @@
* Dave Pare, 1986
* Ken Stevens, 1995
* Steve McClure, 1998-2000
* Markus Armbruster, 2004-2016
* Markus Armbruster, 2004-2020
*/
#include <config.h>
@ -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) {