]> git.pond.sub.org Git - empserver/blobdiff - src/lib/subs/nreport.c
Oops on invalid actor and victim arguments in nreport()
[empserver] / src / lib / subs / nreport.c
index cfb5641bdac625c3bc75d2f378125a7258b26fc9..13216b88bf31dfb5a244590333d7577273ae8178 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2009, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2010, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -59,12 +59,13 @@ void
 nreport(natid actor, int event, natid victim, int times)
 {
     int nice;
-    struct natstr *natp;
     struct newscache *ncp;
 
     if (CANT_HAPPEN((unsigned)event > N_MAX_VERB
                    || rpt[event].r_newstory[0] == rpt[0].r_newstory[0]))
        return;
+    if (CANT_HAPPEN(actor >= MAXNOC || victim >= MAXNOC))
+       return;
 
     ncp = ncache(actor, event, victim, times);
     putnews(ncp->id, &ncp->news);
@@ -83,9 +84,7 @@ nreport(natid actor, int event, natid victim, int times)
        return;
     if (!chance((double)-nice * times / 20.0))
        return;
-    if (!(natp = getnatp(victim)))
-       return;
-    if (getrel(natp, actor) < HOSTILE)
+    if (getrel(getnatp(victim), actor) < HOSTILE)
        return;
 
     setrel(victim, actor, HOSTILE);