Signed-off-by: Jakub Filak jfilak@redhat.com --- src/gui-gtk/main.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c index 12b14e9..1dab44b 100644 --- a/src/gui-gtk/main.c +++ b/src/gui-gtk/main.c @@ -180,18 +180,22 @@ static void add_directory_to_dirlist(const char *problem_dir_path, gpointer data return; }
- char time_buf[sizeof("YYYY-MM-DD hh:mm:ss")]; - time_buf[0] = '\0'; const char *time_str = problem_data_get_content_or_NULL(pd, FILENAME_TIME); - time_t t = 0; - if (time_str && time_str[0]) + char *endptr; + errno = 0; + time_t t = strtol(time_str, &endptr, 10); + if (errno != 0 || endptr == time_str || *endptr != '\0') { - t = strtol(time_str, NULL, 10); /* atoi won't work past 2038! */ - struct tm *ptm = localtime(&t); - size_t time_len = strftime(time_buf, sizeof(time_buf)-1, "%Y-%m-%d %H:%M", ptm); - time_buf[time_len] = '\0'; + /* we don't use error_msg() because we don't want to bother user */ + log("'%s' is not valid problem because of invalid 'time' field ('%s')", problem_dir_path, time_str); + goto finis_add_directory; }
+ struct tm *ptm = localtime(&t); + char time_buf[sizeof("YYYY-MM-DD hh:mm:ss")]; + size_t time_len = strftime(time_buf, sizeof(time_buf)-1, "%Y-%m-%d %H:%M", ptm); + time_buf[time_len] = '\0'; + const char *not_reportable_reason = problem_data_get_content_or_NULL(pd, FILENAME_NOT_REPORTABLE); const char *reason = problem_data_get_content_or_NULL(pd, FILENAME_REASON);
@@ -225,9 +229,11 @@ static void add_directory_to_dirlist(const char *problem_dir_path, gpointer data -1);
free(subm_status); - problem_data_free(pd);
VERB1 log("added: %s", problem_dir_path); + +finis_add_directory: + problem_data_free(pd); }
static void query_dbus_and_add_to_dirlist(void)