]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Remove the VP from the cursor before freeing
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 15 Sep 2017 07:25:41 +0000 (14:25 +0700)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 15 Sep 2017 07:25:41 +0000 (14:25 +0700)
That way the cursor doesn't contain references to already freed memory.

src/lib/util/pair.c

index e16b327cb9372247347668ef9bea49382ea2ddb3..594cd2966cd6fccd90fdf44bcdea0a7eafc586e7 100644 (file)
@@ -538,13 +538,10 @@ void fr_pair_list_free(VALUE_PAIR **vps)
        VALUE_PAIR      *vp;
        fr_cursor_t     cursor;
 
-       if (!vps || !*vps) {
-               return;
-       }
+       if (!vps || !*vps) return;
 
-       for (vp = fr_cursor_init(&cursor, vps);
-            vp;
-            vp = fr_cursor_next(&cursor)) {
+       fr_cursor_init(&cursor, vps);
+       while ((vp = fr_cursor_remove(&cursor))) {
                VP_VERIFY(vp);
                talloc_free(vp);
        }