]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
more assertions and checks
authorAlan T. DeKok <aland@freeradius.org>
Thu, 19 Oct 2017 15:24:31 +0000 (11:24 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 19 Oct 2017 15:25:03 +0000 (11:25 -0400)
src/main/unlang_interpret.c

index 105afd8d3dc51be3bd2e29d15b6f359b1430f002..5b14aeb146d55e2d4c68c1362938d1d24e7136c4 100644 (file)
@@ -1123,18 +1123,22 @@ static rlm_rcode_t unlang_parallel_run(REQUEST *request, unlang_parallel_t *stat
        for (i = 0; i < state->num_children; i++) {
                switch (state->children[i].state) {
                case CHILD_RUNNABLE:
+                       rad_assert(state->children[i].child->backlog != NULL);
+                       rad_assert(state->children[i].child->runnable_id >= 0);
                        (void) fr_heap_extract(state->children[i].child->backlog,
                                               state->children[i].child);
                        /* FALL-THROUGH */
 
                case CHILD_YIELDED:
+                       REQUEST_VERIFY(state->children[i].child);
                        TALLOC_FREE(state->children[i].child);
 
-                       rad_assert(request->runnable_id < 0);
+                       rad_assert(state->children[i].child->runnable_id < 0);
                        /* FALL-THROUGH */
 
                default:
                        state->children[i].state = CHILD_DONE;
+                       state->children[i].child = NULL;
                        state->children[i].instruction = NULL;
                        break;
                }