|
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 */ |