From a5093f6e0dbbba7ed9395d65f5fcf7a03385ba81 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Fri, 30 Dec 2022 16:39:00 -0600 Subject: [PATCH] kadm5: Fix clobbering of interruption code in kadm5_c_iter_principals() --- lib/kadm5/get_princs_c.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/lib/kadm5/get_princs_c.c b/lib/kadm5/get_princs_c.c index 93d7ce7ed..be86cfa57 100644 --- a/lib/kadm5/get_princs_c.c +++ b/lib/kadm5/get_princs_c.c @@ -131,6 +131,7 @@ kadm5_c_iter_principals(void *server_handle, int32_t tmp; krb5_data reply; size_t i; + int stop = 0; ret = _kadm5_connect(server_handle, 0 /* want_write */); if (ret) @@ -188,7 +189,6 @@ kadm5_c_iter_principals(void *server_handle, if (tmp < 0) { size_t n = -tmp; int more = 1; - int stop = 0; /* The server supports online iteration, hooray! */ @@ -249,12 +249,6 @@ kadm5_c_iter_principals(void *server_handle, } free(princ); } - - if (!more) { - if (ret == 0) - ret = stop; - break; - } } /* Get the final result code */ krb5_data_free(&reply); @@ -293,10 +287,12 @@ kadm5_c_iter_principals(void *server_handle, } } - out: +out: krb5_clear_error_message(context->context); - out_keep_error: +out_keep_error: + if (stop) + ret = stop; krb5_storage_free(sp); krb5_data_free(&reply); return ret;