Commit 857264ac authored by Philipp Schafft's avatar Philipp Schafft 🦁

Fix: memory leak and race condition fix

parent 2a99aa0f
...@@ -613,6 +613,7 @@ void auth_stack_release(auth_stack_t *stack) { ...@@ -613,6 +613,7 @@ void auth_stack_release(auth_stack_t *stack) {
return; return;
auth_release(stack->auth); auth_release(stack->auth);
auth_stack_release(stack->next);
thread_mutex_destroy(&stack->lock); thread_mutex_destroy(&stack->lock);
free(stack); free(stack);
} }
...@@ -631,9 +632,9 @@ int auth_stack_next(auth_stack_t **stack) { ...@@ -631,9 +632,9 @@ int auth_stack_next(auth_stack_t **stack) {
return -1; return -1;
thread_mutex_lock(&(*stack)->lock); thread_mutex_lock(&(*stack)->lock);
next = (*stack)->next; next = (*stack)->next;
auth_stack_addref(next);
thread_mutex_unlock(&(*stack)->lock); thread_mutex_unlock(&(*stack)->lock);
auth_stack_release(*stack); auth_stack_release(*stack);
auth_stack_addref(next);
*stack = next; *stack = next;
if (!next) if (!next)
return 1; return 1;
...@@ -656,7 +657,9 @@ int auth_stack_push(auth_stack_t **stack, auth_t *auth) { ...@@ -656,7 +657,9 @@ int auth_stack_push(auth_stack_t **stack, auth_t *auth) {
auth_addref(auth); auth_addref(auth);
if (*stack) { if (*stack) {
return auth_stack_append(*stack, next); auth_stack_append(*stack, next);
auth_stack_release(next);
return 0;
} else { } else {
*stack = next; *stack = next;
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment