Author: soliton
Date: Tue Apr 14 21:17:34 2009
New Revision: 34915
URL: http://svn.gna.org/viewcvs/wesnoth?rev=34915&view=rev
Log:
implemented a white list of valid chars for replay filenames
Modified:
trunk/src/server/game.cpp
Modified: trunk/src/server/game.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/server/game.cpp?rev=34915&r1=34914&r2=34915&view=diff
==============================================================================
--- trunk/src/server/game.cpp (original)
+++ trunk/src/server/game.cpp Tue Apr 14 21:17:34 2009
@@ -1210,6 +1210,14 @@
history_.push_back(doc);
}
+static bool is_invalid_filename_char(char c) {
+ return !(isalnum(c) || (c == '_') || (c == '-') || (c == '.')
+ || (c == '(') || (c == ')') || (c == '#') || (c == ',')
+ || (c == '!') || (c == '?') || (c == '^') || (c == '+')
+ || (c == '*') || (c == ':') || (c == '=') || (c == '@')
+ || (c == '%') || (c == '\''));
+}
+
void game::save_replay() {
if (!save_replays_ || !started_) return;
@@ -1242,7 +1250,7 @@
std::string filename(name.str());
std::replace(filename.begin(), filename.end(), ' ', '_');
- //filename.erase(std::remove(filename.begin(), filename.end(), '\''),
filename.end());
+ filename.erase(std::remove_if(filename.begin(), filename.end(),
is_invalid_filename_char), filename.end());
DBG_GAME << "saving replay: " << filename << std::endl;
scoped_ostream os(ostream_file(replay_save_path_ + filename));
(*os) << replay.output_compressed();
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits