From: Aleš Křenek Date: Fri, 30 Sep 2005 11:18:16 +0000 (+0000) Subject: register plugin with gsoap _after_ GSS accept is OK X-Git-Tag: gridsite-core_R_1_1_12~68 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=4f6c5f7d37d741e8ba77e757fcf177e11c5e21bc;p=jra1mw.git register plugin with gsoap _after_ GSS accept is OK (prevent access to free()d data) --- diff --git a/org.glite.jp.primary/src/bones_server.c b/org.glite.jp.primary/src/bones_server.c index 5cb2367..5ddcd32 100644 --- a/org.glite.jp.primary/src/bones_server.c +++ b/org.glite.jp.primary/src/bones_server.c @@ -200,7 +200,6 @@ static int newconn(int conn,struct timeval *to,void *data) glite_gsplugin_init_context(&plugin_ctx); plugin_ctx->connection = calloc(1,sizeof *plugin_ctx->connection); - soap_register_plugin_arg(soap,glite_gsplugin,plugin_ctx); switch (edg_wll_gss_watch_creds(server_cert,&cert_mtime)) { case 0: break; @@ -248,10 +247,11 @@ static int newconn(int conn,struct timeval *to,void *data) if (client_name != GSS_C_NO_NAME) gss_release_name(&min_stat, &client_name); if (token.value) gss_release_buffer(&min_stat, &token); + soap_register_plugin_arg(soap,glite_gsplugin,plugin_ctx); return 0; cleanup: - glite_gsplugin_free_context(plugin_ctx); + glite_gsplugin_free_context(plugin_ctx); plugin_ctx = NULL; soap_end(soap); return ret;