This patch fixes bug that caused kadmin to always exit with '0',no matter what error has occured. The solution is to propagate error code properly in several functions to make the process return exit code on errors. This issue has been already fixed in upstream, so the patch is just a backport to 0.7.2 Backported by : Igor Yanover --- heimdal-0.7.2/kadmin/util.c.orig 2006-12-06 14:48:32.000000000 +0200 +++ heimdal-0.7.2/kadmin/util.c 2006-12-06 14:49:29.000000000 +0200 @@ -495,7 +495,7 @@ char **princs; int num_princs; int i; - krb5_error_code ret = 0; + krb5_error_code saved_ret = 0, ret = 0; krb5_principal princ_ent; int is_expr; @@ -527,12 +527,17 @@ continue; } ret = (*func)(princ_ent, data); - if(ret) + if(ret) { krb5_warn(context, ret, "%s %s", funcname, princs[i]); + if (saved_ret == 0) + saved_ret = ret; + } krb5_free_principal(context, princ_ent); } + if (ret == 0 && saved_ret != 0) + ret = saved_ret; kadm5_free_name_list(kadm_handle, princs, &num_princs); - return 0; + return ret; } /* --- heimdal-0.7.2/kadmin/get.c.orig 2006-12-06 15:07:59.000000000 +0200 +++ heimdal-0.7.2/kadmin/get.c 2006-12-06 15:08:19.000000000 +0200 @@ -387,7 +387,7 @@ rtbl_destroy(data.table); } free_columns(&data); - return 0; + return ret != 0; } int