diff options
| author | Nikola Pajkovsky <npajkovs@redhat.com> | 2010-09-10 11:07:33 +0200 |
|---|---|---|
| committer | Nikola Pajkovsky <npajkovs@redhat.com> | 2010-09-10 11:39:27 +0200 |
| commit | c7129a09a31048dcca6b5913ac22c77ca3dc16ac (patch) | |
| tree | 654b8480506d6e24c5fd82cfaee7ee2133cdf1cc /lib/utils/database.c | |
| parent | a73e1e09227d2d51fe48172ef2d25719fcf4b697 (diff) | |
| download | abrt-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/utils/database.c')
| -rw-r--r-- | lib/utils/database.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/utils/database.c b/lib/utils/database.c index f572a5ba..2b742ebf 100644 --- a/lib/utils/database.c +++ b/lib/utils/database.c @@ -20,6 +20,27 @@ #include "abrtlib.h" #include "database.h" +struct db_row *db_rowcpy_from_list(GList* list) +{ + GList *first = g_list_first(list); + struct db_row *row = (struct db_row*)xzalloc(sizeof(struct db_row)); + struct db_row *src_row = (struct db_row*)first->data; + /* All fields are initialized below, copying is not needed + * memcpy(row, (struct db_row*)first->data, sizeof(struct db_row)); + */ + + row->db_uuid = xstrdup(src_row->db_uuid); + row->db_uid = xstrdup(src_row->db_uid); + row->db_inform_all = xstrdup(src_row->db_inform_all); + row->db_dump_dir = xstrdup(src_row->db_dump_dir); + row->db_count = xstrdup(src_row->db_count); + row->db_reported = xstrdup(src_row->db_reported); + row->db_message = xstrdup(src_row->db_message); + row->db_time = xstrdup(src_row->db_time); + + return row; +} + void db_row_free(struct db_row *row) { if (!row) |
