diff --git a/test/test-automation/logger.h b/test/test-automation/logger.h
index 33497357da2056548e44591b9e05abab06b61d6d..ce904592c2de253cc9dd380be36b1765c7242fbd 100644
--- a/test/test-automation/logger.h
+++ b/test/test-automation/logger.h
@@ -38,7 +38,7 @@ typedef struct LoggerData {
 	//!< Logging level of the logger (such as VERBOSE)
 	Level level;
 	//!< Some custom data that a logger needs
-	void  *custom;
+	char  *custom;
 } LoggerData;
 
 /*!
diff --git a/test/test-automation/runner.c b/test/test-automation/runner.c
index b60f93e8238d0121d7edee672970d976aae911d4..ae1eef9cfad22c9e06b5c0676a62ecc3c6ac66cd 100644
--- a/test/test-automation/runner.c
+++ b/test/test-automation/runner.c
@@ -31,7 +31,6 @@
 
 #include "fuzzer/fuzzer.h"
 
-
 #include "config.h"
 
 #include "SDL_test.h"
@@ -94,6 +93,7 @@ char testcase_name_substring[NAME_BUFFER_SIZE];
 
 //! Name for user-supplied XSL style sheet name
 char xsl_stylesheet_name[NAME_BUFFER_SIZE];
+
 //! User-suppled timeout value for tests
 int universal_timeout = -1;
 
@@ -106,11 +106,9 @@ int universal_timeout = -1;
 //! Default directory of the test suites
 #define DEFAULT_LOG_FILENAME "runner"
 
-
 //! Fuzzer seed for the harness
 char *runSeed = NULL;
 
-
 //! Variable is used to pass the generated execution key to a test
 int globalExecKey = 0;
 
@@ -845,7 +843,8 @@ HandleChildProcessReturnValue(int stat_lock)
 
 
 /*!
- * Generates a random run seed for the harness.
+ * Generates a random run seed for the harness. Seed
+ * can contain characters 0-9A-Z
  *
  * \param length The length of the generated seed
  *
@@ -859,7 +858,7 @@ GenerateRunSeed(const int length)
 		return NULL;
 	}
 
-	char *seed = SDL_malloc(length * sizeof(8));
+	char *seed = SDL_malloc((length + 1) * sizeof(char));
 	if(seed == NULL) {
 		fprintf(stderr, "Error: malloc for run seed failed\n");
 		return NULL;
@@ -870,19 +869,13 @@ GenerateRunSeed(const int length)
 	utl_randomInitTime(&randomContext);
 
 	int counter = 0;
-	for( ; counter < length; ++counter) {
+	for( ; counter < length - 1; ++counter) {
 		int number = abs(utl_random(&randomContext));
-		char ch = (char) (number % (122 - 48)) + 48;
+		char ch = (char) (number % (91 - 48)) + 48;
 
-		// Skip all the special characters so the run seed
-		// can be used to form a valid filename.
-		// A lot more characters are skipped than necessary.
 		if(ch >= 58 && ch <= 64) {
 			ch = 65;
 		}
-		if(ch >= 91 && ch <= 96) {
-			ch = 97;
-		}
 
 		seed[counter] = ch;
 	}
@@ -897,10 +890,10 @@ GenerateRunSeed(const int length)
  *
  * \return Logger data structure (that needs be deallocated)
  */
-void *
+LoggerData *
 SetUpLogger()
 {
-	LoggerData *loggerData = SDL_malloc(sizeof(loggerData));
+	LoggerData *loggerData = SDL_malloc(sizeof(LoggerData));
 	if(loggerData == NULL) {
 		fprintf(stderr, "Error: Logger data structure not allocated.");
 		return NULL;
@@ -913,7 +906,9 @@ SetUpLogger()
 		loggerData->stdoutEnabled = 1;
 		loggerData->filename = NULL;
 	} else {
-		const char *extension = (xml_enabled ? "xml": "log");
+		loggerData->stdoutEnabled = 0;
+
+		const char *extension = (xml_enabled ? "xml" : "log");
 
 		/* Combine and create directory for log file */
 		// log_directory + log_basename + seed + . + type
@@ -927,7 +922,8 @@ SetUpLogger()
 		mkdir(log_directory, mode);
 
 		// couple of extras bytes for '/', '-', '.' and '\0' at the end
-		const int length = directoryLength + basenameLength +seedLength +extensionLength + 4;
+		const int length = directoryLength + basenameLength + seedLength
+							+ extensionLength + 4;
 		char *filename = SDL_malloc(length);
 		if(filename == NULL) {
 			SDL_free(loggerData);
@@ -935,12 +931,27 @@ SetUpLogger()
 			fprintf(stderr, "Error: Failed to allocate memory for filename of log");
 			return NULL;
 		}
+		memset(filename, 0, length);
 
-		SDL_snprintf(filename, length, "%s/%s-%s.%s", log_directory, log_basename, runSeed, extension);
+		SDL_snprintf(filename, length, "%s/%s-%s.%s", log_directory, log_basename,
+					 runSeed, extension);
 
 		loggerData->filename = filename;
 	}
 
+	if(xml_enabled) {
+		char *sheet = NULL;
+		if(xsl_enabled) {
+			sheet = "style.xsl"; // default style sheet;
+		}
+
+		if(custom_xsl_enabled) {
+			sheet = xsl_stylesheet_name;
+		}
+
+		loggerData->custom = sheet;
+	}
+
 	if(xml_enabled) {
 		RunStarted = XMLRunStarted;
 		RunEnded = XMLRunEnded;
@@ -956,17 +967,6 @@ SetUpLogger()
 		AssertSummary = XMLAssertSummary;
 
 		Log = XMLLog;
-
-		char *sheet = NULL;
-		if(xsl_enabled) {
-			sheet = "style.xsl"; // default style sheet;
-		}
-
-		if(custom_xsl_enabled) {
-			sheet = xsl_stylesheet_name;
-		}
-
-		loggerData->custom = sheet;
 	} else {
 		RunStarted = PlainRunStarted;
 		RunEnded = PlainRunEnded;
@@ -1236,6 +1236,8 @@ main(int argc, char *argv[])
 	memset(selected_test_name, 0, NAME_BUFFER_SIZE);
 	memset(selected_suite_name, 0, NAME_BUFFER_SIZE);
 	memset(testcase_name_substring, 0, NAME_BUFFER_SIZE);
+	memset(xsl_stylesheet_name, 0, NAME_BUFFER_SIZE);
+
 
 	ParseOptions(argc, argv);
 
@@ -1248,14 +1250,6 @@ main(int argc, char *argv[])
 	char *extension = "dylib";
 #endif
 
-	if(userRunSeed == 0) {
-		runSeed = GenerateRunSeed(16);
-		if(runSeed == NULL) {
-			fprintf(stderr, "Error: Generating harness seed failed\n");
-			return 2;
-		}
-	}
-
 	const Uint32 startTicks = SDL_GetTicks();
 
 	TestSuiteReference *suites = ScanForTestSuites(DEFAULT_TEST_DIRECTORY, extension);
@@ -1283,6 +1277,14 @@ main(int argc, char *argv[])
 		return 0;
 	}
 
+	if(userRunSeed == 0) {
+		runSeed = GenerateRunSeed(16);
+		if(runSeed == NULL) {
+			fprintf(stderr, "Error: Generating harness seed failed\n");
+			return 2;
+		}
+	}
+
 	LoggerData *loggerData = SetUpLogger();
 
 	if(log_stdout_enabled == 0) {