From: Marco Costalba Date: Sun, 17 Jul 2011 09:22:08 +0000 (+0100) Subject: Validate input UCI moves X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=b8eb699db7aafb3c00165ef26015e9ad562d787e Validate input UCI moves Running following command: position startpos moves e1e8 Makes SF to assert in debug mode in do_move() but to accept bad input and continue in release mode where probably it is going to crash little later. So validate input before to feed do_move(). Suggestion by Yakovlev Vadim. No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/position.cpp b/src/position.cpp index 18f4978d..abe24a52 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -777,6 +777,8 @@ bool Position::move_gives_check(Move m, const CheckInfo& ci) const { void Position::do_setup_move(Move m) { + assert(move_is_ok(m)); + StateInfo newSt; // Update the number of full moves after black's move diff --git a/src/uci.cpp b/src/uci.cpp index cc3a271d..673d6618 100644 --- a/src/uci.cpp +++ b/src/uci.cpp @@ -120,6 +120,7 @@ namespace { void set_position(Position& pos, UCIParser& up) { + Move m; string token, fen; up >> token; // operator>>() skips any whitespace @@ -139,8 +140,8 @@ namespace { else return; // Parse move list (if any) - while (up >> token) - pos.do_setup_move(move_from_uci(pos, token)); + while (up >> token && (m = move_from_uci(pos, token)) != MOVE_NONE) + pos.do_setup_move(m); }