glite_gsplugin_free_context(glite_gsplugin_Context ctx)
{
OM_uint32 ms;
+
+ if (ctx == NUL)
+ return 0;
if ( ctx->cred != GSS_C_NO_CREDENTIAL ) gss_release_cred(&ms, &ctx->cred);
if ( ctx->connection ) {
edg_wll_gss_close(ctx->connection, NULL);
free(ctx->connection);
}
- free(ctx->error_msg);
- free(ctx->key_filename);
- free(ctx->cert_filename);
+ if (ctx->error_msg)
+ free(ctx->error_msg);
+ if (ctx->key_filename)
+ free(ctx->key_filename);
+ if (ctx->cert_filename)
+ free(ctx->cert_filename);
free(ctx);
return 0;
return EINVAL;
}
- ctx->cert_filename = cert;
- ctx->key_filename = key;
+ ctx->cert_filename = strdup(cert);
+ ctx->key_filename = strdup(key);
return 0;
}
glite_gsplugin_close(soap);
if (d->ctx->cred != GSS_C_NO_CREDENTIAL) gss_release_cred(&ms, &d->ctx->cred);
free(d->ctx->error_msg);
+ d->ctx->error_msg = NULL;
}
free(d);
}