summaryrefslogtreecommitdiffstats
path: root/lib/plugins/SQLite3.cpp
diff options
context:
space:
mode:
authorNikola Pajkovsky <npajkovs@redhat.com>2010-09-10 11:07:33 +0200
committerNikola Pajkovsky <npajkovs@redhat.com>2010-09-10 11:39:27 +0200
commitc7129a09a31048dcca6b5913ac22c77ca3dc16ac (patch)
tree654b8480506d6e24c5fd82cfaee7ee2133cdf1cc /lib/plugins/SQLite3.cpp
parenta73e1e09227d2d51fe48172ef2d25719fcf4b697 (diff)
downloadabrt-c7129a09a31048dcca6b5913ac22c77ca3dc16ac.tar.gz
abrt-c7129a09a31048dcca6b5913ac22c77ca3dc16ac.tar.xz
abrt-c7129a09a31048dcca6b5913ac22c77ca3dc16ac.zip
fix sigsegv
copy struct with char* lead to sigsegv. each char* needs to be duplicate. Signed-off-by: Nikola Pajkovsky <npajkovs@redhat.com>
Diffstat (limited to 'lib/plugins/SQLite3.cpp')
-rw-r--r--lib/plugins/SQLite3.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/plugins/SQLite3.cpp b/lib/plugins/SQLite3.cpp
index 040314fe..4af24c31 100644
--- a/lib/plugins/SQLite3.cpp
+++ b/lib/plugins/SQLite3.cpp
@@ -123,7 +123,7 @@ static GList *vget_table(sqlite3 *db, const char *fmt, va_list p)
VERB2 log("%s: %d rows returned by SQL:%s", __func__, nrow, sql);
free(sql);
- if (ncol < NUM_COL)
+ if (nrow > 0 && ncol < NUM_COL)
error_msg_and_die("Unexpected number of columns: %d", ncol);
GList *rows = NULL;
@@ -147,6 +147,15 @@ static GList *vget_table(sqlite3 *db, const char *fmt, va_list p)
case 7: row->db_message = xstrdup(val); break;
}
}
+
+ VERB3 log("%s: row->db_uuid = '%s'", __func__, row->db_uuid);
+ VERB3 log("%s: row->db_uid = '%s'", __func__, row->db_uid);
+ VERB3 log("%s: row->db_inform_all = '%s'", __func__, row->db_inform_all);
+ VERB3 log("%s: row->db_dump_dir = '%s'", __func__, row->db_dump_dir);
+ VERB3 log("%s: row->db_count = '%s'", __func__, row->db_count);
+ VERB3 log("%s: row->db_reported = '%s'", __func__, row->db_reported);
+ VERB3 log("%s: row->db_time = '%s'", __func__, row->db_time);
+ VERB3 log("%s: row->db_message = '%s'", __func__, row->db_message);
rows = g_list_append(rows, row);
}
@@ -665,8 +674,7 @@ struct db_row *CSQLite3::GetRow(const char *crash_id)
}
GList *first = g_list_first(table);
- struct db_row *row = (struct db_row*)xzalloc(sizeof(struct db_row));
- memcpy(row, first->data, sizeof(struct db_row));
+ struct db_row *row = db_rowcpy_from_list(first);
db_list_free(table);