summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2015-12-17 14:31:48 +0100
committerJiří Klimeš <jklimes@redhat.com>2015-12-21 12:36:28 +0100
commit597c6880cf4516ac788284d439ed59ff398e57cd (patch)
treecae2e4545a93fc53c25d7a9530c390e41da88f06
parent90017ad50ce00e2bc1e4a6fa17e860aecb2742ec (diff)
downloadnetwork-manager-applet-597c6880cf4516ac788284d439ed59ff398e57cd.tar.gz
applet: fix accessing freed memory (rh #1129818)
It was a problem of looping throught list and invalidating ->next pointer when removing an item. See this commit for a similar bug: http://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?id=b9da3d93207e46de895fd07cfe9de1edfa79efef (cherry picked from commit 10c78cb60818cb005e105fb71b74e47d93f53688)
-rw-r--r--src/applet.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/applet.c b/src/applet.c
index 39ea8e47..7a796223 100644
--- a/src/applet.c
+++ b/src/applet.c
@@ -3241,11 +3241,13 @@ applet_agent_cancel_secrets_cb (AppletAgent *agent,
gpointer user_data)
{
NMApplet *applet = NM_APPLET (user_data);
- GSList *iter;
+ GSList *iter, *next;
- for (iter = applet->secrets_reqs; iter; iter = g_slist_next (iter)) {
+ for (iter = applet->secrets_reqs; iter; iter = next) {
SecretsRequest *req = iter->data;
+ next = g_slist_next (iter);
+
if (req->reqid == request_id) {
/* cancel and free this password request */
applet_secrets_request_free (req);