예제 #1
0
KRB5_LIB_FUNCTION void KRB5_LIB_CALL
krb5_free_context(krb5_context context)
{
    krb5_clear_error_message(context);

    HEIMDAL_MUTEX_destroy(&context->mutex);
    if (context->flags & KRB5_CTX_F_SOCKETS_INITIALIZED) {
        rk_SOCK_EXIT();
    }

    memset(context, 0, sizeof(*context));
    free(context);
}
예제 #2
0
KRB5_LIB_FUNCTION void KRB5_LIB_CALL
krb5_free_context(krb5_context context)
{
    if (context->default_cc_name)
        free(context->default_cc_name);
    if (context->default_cc_name_env)
        free(context->default_cc_name_env);
    if (context->config_files)
        krb5_free_config_files(context->config_files);
    free(context->etypes);
    free(context->etypes_des);
    heim_release(context->default_realms);
    krb5_config_file_free (context, context->cf);
    free_error_table (context->et_list);
    free(rk_UNCONST(context->cc_ops));
    free(context->kt_types);
    krb5_clear_error_message(context);
    if (context->warn_dest != NULL)
        krb5_closelog(context, context->warn_dest);
    if (context->debug_dest != NULL)
        krb5_closelog(context, context->debug_dest);
    krb5_set_extra_addresses(context, NULL);
    krb5_set_ignore_addresses(context, NULL);
#ifndef HEIMDAL_SMALLER
    krb5_set_send_to_kdc_func(context, NULL, NULL);
#endif

#ifdef PKINIT
    if (context->hx509ctx)
        hx509_context_free(&context->hx509ctx);
#endif

    HEIMDAL_MUTEX_destroy(context->mutex);
    free(context->mutex);
    if (context->flags & KRB5_CTX_F_SOCKETS_INITIALIZED) {
        rk_SOCK_EXIT();
    }

    memset(context, 0, sizeof(*context));
    free(context);
}
예제 #3
0
int
main(int argc, char **argv)
{
    struct ifaddrs *addrs = NULL;
    int ret, optidx = 0;

    setprogname (argv[0]);

    if (getarg (args, sizeof(args) / sizeof(args[0]), argc, argv,
		&optidx))
	usage (1);

    if (help_flag)
	usage (0);

    if (version_flag) {
	fprintf (stderr, "%s from %s-%s\n", getprogname(), PACKAGE, VERSION);
	return 0;
    }

    if (rk_SOCK_INIT())
	errx(1, "Couldn't initialize sockets. Err=%d\n", rk_SOCK_ERRNO);

    ret = getifaddrs(&addrs);
    if (ret != 0)
	err(1, "getifaddrs");

    if (addrs == NULL)
	errx(1, "address == NULL");

    print_ifaddrs(addrs);

    /* Check that freeifaddrs doesn't crash */
    freeifaddrs(addrs);

    rk_SOCK_EXIT();

    return 0;
}
예제 #4
0
int
main(int argc, char **argv)
{
    int optidx = 0;
    int i;

    setprogname (argv[0]);

    if (getarg (args, sizeof(args) / sizeof(args[0]), argc, argv,
		&optidx))
	usage (1);

    if (help_flag)
	usage (0);

    if (version_flag) {
	fprintf (stderr, "%s from %s-%s\n", getprogname(), PACKAGE, VERSION);
	return 0;
    }

    rk_SOCK_INIT();

    argc -= optidx;
    argv += optidx;

    if (argc % 2 != 0)
	usage (1);

    for (i = 0; i < argc; i += 2) {
	const char *nodename = argv[i];

	if (strcmp (nodename, "null") == 0)
	    nodename = NULL;

	doit (nodename, argv[i+1]);
    }
    rk_SOCK_EXIT();
    return 0;
}