version 1.1.1.3, 2013/10/14 07:56:35
|
version 1.1.1.4, 2014/06/15 16:12:55
|
Line 1
|
Line 1
|
/* |
/* |
* Copyright (c) 2010, 2011 Todd C. Miller <Todd.Miller@courtesan.com> | * Copyright (c) 2010, 2011, 2013 Todd C. Miller <Todd.Miller@courtesan.com> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 16
|
Line 16
|
|
|
#include <config.h> |
#include <config.h> |
|
|
#if HAVE_GSS_KRB5_CCACHE_NAME | #ifdef HAVE_GSS_KRB5_CCACHE_NAME |
# if defined(HAVE_GSSAPI_GSSAPI_KRB5_H) |
# if defined(HAVE_GSSAPI_GSSAPI_KRB5_H) |
# include <gssapi/gssapi.h> |
# include <gssapi/gssapi.h> |
# include <gssapi/gssapi_krb5.h> |
# include <gssapi/gssapi_krb5.h> |
Line 28
|
Line 28
|
#endif |
#endif |
|
|
#include "sudo_plugin.h" |
#include "sudo_plugin.h" |
|
#include "sudo_dso.h" |
|
|
|
#ifdef STATIC_SUDOERS_PLUGIN |
|
|
extern struct policy_plugin sudoers_policy; |
extern struct policy_plugin sudoers_policy; |
extern struct io_plugin sudoers_io; |
extern struct io_plugin sudoers_io; |
|
|
struct sudo_preload_table { | static struct sudo_preload_symbol sudo_rtld_default_symbols[] = { |
const char *name; | # ifdef HAVE_GSS_KRB5_CCACHE_NAME |
void *address; | { "gss_krb5_ccache_name", (void *)&gss_krb5_ccache_name}, |
} sudo_preload_table[] = { | # endif |
{ "sudoers_policy", (void *) &sudoers_policy}, | |
{ "sudoers_io", (void *) &sudoers_io}, | |
#ifdef HAVE_GSS_KRB5_CCACHE_NAME | |
{ "gss_krb5_ccache_name", (void *) &gss_krb5_ccache_name}, | |
#endif | |
{ (const char *)0, (void *)0 } |
{ (const char *)0, (void *)0 } |
}; |
}; |
|
|
|
/* XXX - can we autogenerate these? */ |
|
static struct sudo_preload_symbol sudo_sudoers_plugin_symbols[] = { |
|
{ "sudoers_policy", (void *)&sudoers_policy}, |
|
{ "sudoers_io", (void *)&sudoers_io}, |
|
{ (const char *)0, (void *)0 } |
|
}; |
|
|
|
/* |
|
* Statically compiled symbols indexed by handle. |
|
*/ |
|
static struct sudo_preload_table sudo_preload_table[] = { |
|
{ (char *)0, SUDO_DSO_DEFAULT, sudo_rtld_default_symbols }, |
|
{ "sudoers.so", &sudo_sudoers_plugin_symbols, sudo_sudoers_plugin_symbols }, |
|
{ (char *)0, (void *)0, (struct sudo_preload_symbol *)0 } |
|
}; |
|
|
|
void |
|
preload_static_symbols(void) |
|
{ |
|
sudo_dso_preload_table(sudo_preload_table); |
|
} |
|
|
|
#endif /* STATIC_SUDOERS_PLUGIN */ |