]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/retr.c
retreat: Reject invalid retreat paths
[empserver] / src / lib / commands / retr.c
index 9bf6f2396c087547c440400f90eb238e0bc6fad4..562af9777758a2f6bdc4a63b9e24c4c0ab2db3d3 100644 (file)
@@ -38,6 +38,7 @@
 #include "commands.h"
 #include "empobj.h"
 #include "land.h"
+#include "path.h"
 #include "retreat.h"
 #include "ship.h"
 
@@ -84,9 +85,16 @@ retreat(int type)
     if (!snxtitem(&ni, type, player->argp[1], NULL))
        return RET_SYN;
     nunits = 0;
-    if (player->argp[2] != NULL)
+    if (player->argp[2] != NULL) {
        pq = getstarg(player->argp[2], "Retreat path? ", buf1);
-    else
+       for (i = 0; i < RET_LEN - 1 && pq[i]; i++) {
+           if (chkdir(pq[i], DIR_STOP, DIR_LAST) < 0) {
+               pr("'%c' is not a valid direction...\n", pq[i]);
+               direrr(NULL, NULL, NULL);
+               return RET_SYN;
+           }
+       }
+    } else
        pq = NULL;
 
     rflags = 0;