svn rev #21709: trunk/src/kadmin/server/
ghudson@MIT.EDU
ghudson at MIT.EDU
Tue Jan 6 15:44:01 EST 2009
http://mv.ezproxy.com.ezproxyberklee.flo.org/fisheye/changelog/krb5/?cs=21709
Commit By: ghudson
Log Message:
Clean up many error-condition leaks of the server handle in the
kadmind server stubs.
Changed Files:
U trunk/src/kadmin/server/server_stubs.c
Modified: trunk/src/kadmin/server/server_stubs.c
===================================================================
--- trunk/src/kadmin/server/server_stubs.c 2009-01-06 20:24:09 UTC (rev 21708)
+++ trunk/src/kadmin/server/server_stubs.c 2009-01-06 20:44:01 UTC (rev 21709)
@@ -110,6 +110,8 @@
{
kadm5_server_handle_t handle;
+ *out_handle = NULL;
+
if (! (handle = (kadm5_server_handle_t)
malloc(sizeof(*handle))))
return ENOMEM;
@@ -137,6 +139,8 @@
*/
static void free_server_handle(kadm5_server_handle_t handle)
{
+ if (!handle)
+ return;
krb5_free_principal(handle->context, handle->current_caller);
free(handle);
}
@@ -310,10 +314,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -349,12 +351,12 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -374,10 +376,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -414,11 +414,12 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
+
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -438,10 +439,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -474,11 +473,11 @@
}
free(prime_arg);
- free_server_handle(handle);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
- exit_func:
+exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -499,10 +498,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
if (setup_gss_names(rqstp, &client_name, &service_name) < 0) {
ret.code = KADM5_FAILURE;
@@ -534,11 +531,11 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -562,10 +559,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
if (setup_gss_names(rqstp, &client_name, &service_name) < 0) {
ret.code = KADM5_FAILURE;
@@ -633,12 +628,12 @@
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg1);
free(prime_arg2);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -659,10 +654,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -710,11 +703,11 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -734,10 +727,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -772,10 +763,10 @@
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -795,10 +786,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -837,11 +826,11 @@
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -861,10 +850,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -909,11 +896,11 @@
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -933,10 +920,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -972,11 +957,11 @@
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -996,10 +981,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -1035,11 +1018,11 @@
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -1059,10 +1042,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -1101,11 +1082,11 @@
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -1128,10 +1109,8 @@
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -1140,7 +1119,6 @@
if (setup_gss_names(rqstp, &client_name, &service_name) < 0) {
ret.code = KADM5_FAILURE;
- free_server_handle(handle);
goto exit_func;
}
if (krb5_unparse_name(handle->context, arg->princ, &prime_arg)) {
@@ -1182,11 +1160,11 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -1208,10 +1186,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -1220,7 +1196,6 @@
if (setup_gss_names(rqstp, &client_name, &service_name) < 0) {
ret.code = KADM5_FAILURE;
- free_server_handle(handle);
goto exit_func;
}
if (krb5_unparse_name(handle->context, arg->princ, &prime_arg)) {
@@ -1268,11 +1243,11 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
free(prime_arg);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -1292,10 +1267,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -1326,10 +1299,10 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -1349,10 +1322,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -1381,10 +1352,10 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -1404,10 +1375,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -1437,10 +1406,10 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -1463,10 +1432,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -1526,10 +1493,10 @@
log_unauth(funcname, prime_arg,
&client_name, &service_name, rqstp);
}
- free_server_handle(handle);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -1550,10 +1517,8 @@
if ((ret.code = new_server_handle(arg->api_version, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -1585,10 +1550,10 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
}
- free_server_handle(handle);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
@@ -1605,10 +1570,8 @@
if ((ret.code = new_server_handle(*arg, rqstp, &handle)))
goto exit_func;
- if ((ret.code = check_handle((void *)handle))) {
- free_server_handle(handle);
+ if ((ret.code = check_handle((void *)handle)))
goto exit_func;
- }
ret.api_version = handle->api_version;
@@ -1628,10 +1591,10 @@
if (errmsg != NULL)
krb5_free_error_message(handle->context, errmsg);
- free_server_handle(handle);
gss_release_buffer(&minor_stat, &client_name);
gss_release_buffer(&minor_stat, &service_name);
exit_func:
+ free_server_handle(handle);
return &ret;
}
More information about the cvs-krb5
mailing list