]> git.sur5r.net Git - openldap/commitdiff
don't risk dangling pointers
authorPierangelo Masarati <ando@openldap.org>
Fri, 1 Sep 2006 13:59:55 +0000 (13:59 +0000)
committerPierangelo Masarati <ando@openldap.org>
Fri, 1 Sep 2006 13:59:55 +0000 (13:59 +0000)
libraries/libldap/abandon.c

index 551940d1b1655dbbe13d3584db06cf2be8dd05ae..c03d9264d6fb22ad6462371face307119d523bfc 100644 (file)
@@ -124,14 +124,22 @@ do_abandon(
        sendabandon = 1;
 
        /* find the request that we are abandoning */
-       for ( lr = ld->ld_requests; lr != NULL; lr = lr->lr_next ) {
+start_again:;
+       lr = ld->ld_requests;
+       while ( lr != NULL ) {
                if ( lr->lr_msgid == msgid ) {  /* this message */
                        break;
                }
+
                if ( lr->lr_origid == msgid ) {/* child:  abandon it */
-                       (void) do_abandon( ld,
+                       (void)do_abandon( ld,
                                lr->lr_origid, lr->lr_msgid, sctrls, cctrls );
+
+                       /* restart, as lr may now be dangling... */
+                       goto start_again;
                }
+
+               lr = lr->lr_next;
        }
 
        if ( lr != NULL ) {