[PATCH] fix itdb_free crash
James Burton <[email protected]> Thu, 30 Jun 2011 09:29:15 +0100
| Newsgroups | gmane.comp.ipod.gtkpod |
|---|---|
| Message-ID | <[email protected]> |
Hi,
I hope this is the correct list for libgpod discussion.
I've seen a few libgpod crashes in itdb_free() which appear to be due to a
double free of itdb->priv->genius_cuid. Also I assume the check before the
first g_free() can be removed since g_free does nothing if passed NULL.
Thanks,
James Burton
diff --git a/src/itdb_itunesdb.c b/src/itdb_itunesdb.c
index 446e43f..8e47c26 100644
--- a/src/itdb_itunesdb.c
+++ b/src/itdb_itunesdb.c
@@ -1355,8 +1355,7 @@ void itdb_free (Itdb_iTunesDB *itdb)
(GFunc)(itdb_playlist_free), NULL);
}
- if (itdb->priv->genius_cuid)
- g_free(itdb->priv->genius_cuid);
+ g_free(itdb->priv->genius_cuid);
}
g_list_free (itdb->playlists);
@@ -1367,7 +1366,6 @@ void itdb_free (Itdb_iTunesDB *itdb)
itdb_device_free (itdb->device);
if (itdb->userdata && itdb->userdata_destroy)
(*itdb->userdata_destroy) (itdb->userdata);
- g_free (itdb->priv->genius_cuid);
g_free (itdb->priv);
g_free (itdb);
}
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Gtkpod-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-devel
0001-Fix-a-crash-in-itdb_free.patch
(application/octet-stream, 1 KB)
From 1a7d39aa9d8579eb40ec9f7108da2632cf2ba7f6 Mon Sep 17 00:00:00 2001 From: James Burton <[email protected]> Date: Thu, 30 Jun 2011 09:18:07 +0100 Subject: [PATCH] Fix a crash in itdb_free Double free of itdb->priv->genius_cui caused a crash --- src/itdb_itunesdb.c | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) diff --git a/src/itdb_itunesdb.c b/src/itdb_itunesdb.c index 446e43f..8e47c26 100644 --- a/src/itdb_itunesdb.c +++ b/src/itdb_itunesdb.c @@ -1355,8 +1355,7 @@ void itdb_free (Itdb_iTunesDB *itdb) (GFunc)(itdb_playlist_free), NULL); } - if (itdb->priv->genius_cuid) - g_free(itdb->priv->genius_cuid); + g_free(itdb->priv->genius_cuid); } g_list_free (itdb->playlists); @@ -1367,7 +1366,6 @@ void itdb_free (Itdb_iTunesDB *itdb) itdb_device_free (itdb->device); if (itdb->userdata && itdb->userdata_destroy) (*itdb->userdata_destroy) (itdb->userdata); - g_free (itdb->priv->genius_cuid); g_free (itdb->priv); g_free (itdb); } -- 1.7.5.4