From 5b3acf3f6b6c45585a4e85e84c2472be267109d1 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 12 Apr 2014 03:39:15 -0400 Subject: [PATCH] fix issue where log file cannot be created due to invalid name/path --- src/log.c | 3 +++ src/misc_tools.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/log.c b/src/log.c index a93ec1f..6294fdd 100644 --- a/src/log.c +++ b/src/log.c @@ -42,6 +42,9 @@ void init_logging_session(uint8_t *name, uint8_t *key, struct chatlog *log) if (!log->log_on) return; + if (!valid_nick(name)) + name = UNKNOWN_NAME; + char *user_config_dir = get_user_config_dir(); int path_len = strlen(user_config_dir) + strlen(CONFIGDIR) + strlen(name); diff --git a/src/misc_tools.c b/src/misc_tools.c index 31ef296..f2f810a 100644 --- a/src/misc_tools.c +++ b/src/misc_tools.c @@ -202,6 +202,7 @@ int qsort_strcasecmp_hlpr(const void *nick1, const void *nick2) /* Returns 1 if nick is valid, 0 if not. A valid toxic nick: - cannot be empty - cannot start with a space + - must not contain a forward slash (for logfile naming purposes) - must not contain contiguous spaces */ int valid_nick(uint8_t *nick) { @@ -213,6 +214,8 @@ int valid_nick(uint8_t *nick) for (i = 0; nick[i]; ++i) { if (nick[i] == ' ' && nick[i+1] == ' ') return 0; + if (nick[i] == '/') + return 0; } return 1;