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

Reply via email to