From mboxrd@z Thu Jan 1 00:00:00 1970 From: lhh@sourceware.org Date: 27 Nov 2006 22:32:06 -0000 Subject: [Cluster-devel] cluster/rgmanager/src/daemons rg_thread.c Message-ID: <20061127223206.22148.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: cluster Changes by: lhh at sourceware.org 2006-11-27 22:32:05 Modified files: rgmanager/src/daemons: rg_thread.c Log message: Fix #213878 - segfault in rg_thread.c due to improper loop semantics Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_thread.c.diff?cvsroot=cluster&r1=1.15&r2=1.16 --- cluster/rgmanager/src/daemons/rg_thread.c 2006/09/27 18:58:53 1.15 +++ cluster/rgmanager/src/daemons/rg_thread.c 2006/11/27 22:32:05 1.16 @@ -111,18 +111,22 @@ purge_status_checks(request_t **list) { request_t *curr; + int found; if (!list) return; - list_do(list, curr) { - if (curr->rr_request != RG_STATUS) - continue; - - list_remove(list, curr); - rq_free(curr); - curr = *list; - } while (!list_done(list, curr)); + do { + found = 0; + list_do(list, curr) { + if (curr->rr_request == RG_STATUS) { + list_remove(list, curr); + rq_free(curr); + found = 1; + break; + } + } while (!list_done(list, curr)); + } while (found); }