diff options
Diffstat (limited to 'contrib/openpam/include/security/openpam.h')
-rw-r--r-- | contrib/openpam/include/security/openpam.h | 167 |
1 files changed, 100 insertions, 67 deletions
diff --git a/contrib/openpam/include/security/openpam.h b/contrib/openpam/include/security/openpam.h index 55b237e..3361d62 100644 --- a/contrib/openpam/include/security/openpam.h +++ b/contrib/openpam/include/security/openpam.h @@ -1,5 +1,6 @@ /*- * Copyright (c) 2002-2003 Networks Associates Technology, Inc. + * Copyright (c) 2004-2007 Dag-Erling Smørgrav * All rights reserved. * * This software was developed for the FreeBSD Project by ThinkSec AS and @@ -31,17 +32,19 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/openpam/include/security/openpam.h#28 $ + * $Id: openpam.h 408 2007-12-21 11:36:24Z des $ */ -#ifndef _SECURITY_OPENPAM_H_INCLUDED -#define _SECURITY_OPENPAM_H_INCLUDED +#ifndef SECURITY_OPENPAM_H_INCLUDED +#define SECURITY_OPENPAM_H_INCLUDED /* * Annoying but necessary header pollution */ #include <stdarg.h> +#include <security/openpam_attr.h> + #ifdef __cplusplus extern "C" { #endif @@ -53,7 +56,8 @@ struct passwd; */ int openpam_borrow_cred(pam_handle_t *_pamh, - const struct passwd *_pwd); + const struct passwd *_pwd) + OPENPAM_NONNULL((1,2)); void openpam_free_data(pam_handle_t *_pamh, @@ -68,7 +72,8 @@ openpam_get_option(pam_handle_t *_pamh, const char *_option); int -openpam_restore_cred(pam_handle_t *_pamh); +openpam_restore_cred(pam_handle_t *_pamh) + OPENPAM_NONNULL((1)); int openpam_set_option(pam_handle_t *_pamh, @@ -76,50 +81,64 @@ openpam_set_option(pam_handle_t *_pamh, const char *_value); int -pam_error(pam_handle_t *_pamh, +pam_error(const pam_handle_t *_pamh, const char *_fmt, - ...); + ...) + OPENPAM_FORMAT ((__printf__, 2, 3)) + OPENPAM_NONNULL((1,2)); int pam_get_authtok(pam_handle_t *_pamh, int _item, const char **_authtok, - const char *_prompt); + const char *_prompt) + OPENPAM_NONNULL((1,3)); int -pam_info(pam_handle_t *_pamh, +pam_info(const pam_handle_t *_pamh, const char *_fmt, - ...); + ...) + OPENPAM_FORMAT ((__printf__, 2, 3)) + OPENPAM_NONNULL((1,2)); int -pam_prompt(pam_handle_t *_pamh, +pam_prompt(const pam_handle_t *_pamh, int _style, char **_resp, const char *_fmt, - ...); + ...) + OPENPAM_FORMAT ((__printf__, 4, 5)) + OPENPAM_NONNULL((1,4)); int pam_setenv(pam_handle_t *_pamh, const char *_name, const char *_value, - int _overwrite); + int _overwrite) + OPENPAM_NONNULL((1,2,3)); int -pam_vinfo(pam_handle_t *_pamh, +pam_vinfo(const pam_handle_t *_pamh, const char *_fmt, - va_list _ap); + va_list _ap) + OPENPAM_FORMAT ((__printf__, 2, 0)) + OPENPAM_NONNULL((1,2)); int -pam_verror(pam_handle_t *_pamh, +pam_verror(const pam_handle_t *_pamh, const char *_fmt, - va_list _ap); + va_list _ap) + OPENPAM_FORMAT ((__printf__, 2, 0)) + OPENPAM_NONNULL((1,2)); int -pam_vprompt(pam_handle_t *_pamh, +pam_vprompt(const pam_handle_t *_pamh, int _style, char **_resp, const char *_fmt, - va_list _ap); + va_list _ap) + OPENPAM_FORMAT ((__printf__, 4, 0)) + OPENPAM_NONNULL((1,4)); /* * Read cooked lines. @@ -130,7 +149,8 @@ pam_vprompt(pam_handle_t *_pamh, char * openpam_readline(FILE *_f, int *_lineno, - size_t *_lenp); + size_t *_lenp) + OPENPAM_NONNULL((1)); #endif /* @@ -151,10 +171,8 @@ _openpam_log(int _level, const char *_func, const char *_fmt, ...) -#if defined(__GNUC__) - __attribute__((__format__(__printf__, 3, 4))) -#endif - ; + OPENPAM_FORMAT ((__printf__, 3, 4)) + OPENPAM_NONNULL((3)); #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) #define openpam_log(lvl, ...) \ @@ -172,7 +190,9 @@ _openpam_log(int _level, void openpam_log(int _level, const char *_format, - ...); + ...) + OPENPAM_FORMAT ((__printf__, 2, 3)) + OPENPAM_NONNULL((2)); #endif /* @@ -217,6 +237,11 @@ PAM_EXTERN int \ pam_sm_##type(pam_handle_t *pamh, int flags, \ int argc, const char *argv[]) \ { \ + \ + (void)pamh; \ + (void)flags; \ + (void)argc; \ + (void)argv; \ return (PAM_IGNORE); \ } @@ -234,9 +259,6 @@ struct pam_module { char *path; pam_func_t func[PAM_NUM_PRIMITIVES]; void *dlh; - int refcount; - pam_module_t *prev; - pam_module_t *next; }; /* @@ -244,39 +266,43 @@ struct pam_module { */ #if defined(PAM_SM_AUTH) || defined(PAM_SM_ACCOUNT) || \ defined(PAM_SM_SESSION) || defined(PAM_SM_PASSWORD) -#define LINUX_PAM_MODULE +# define LINUX_PAM_MODULE #endif + #if defined(LINUX_PAM_MODULE) && !defined(PAM_SM_AUTH) -#define _PAM_SM_AUTHENTICATE 0 -#define _PAM_SM_SETCRED 0 +# define _PAM_SM_AUTHENTICATE 0 +# define _PAM_SM_SETCRED 0 #else -#undef PAM_SM_AUTH -#define PAM_SM_AUTH -#define _PAM_SM_AUTHENTICATE pam_sm_authenticate -#define _PAM_SM_SETCRED pam_sm_setcred +# undef PAM_SM_AUTH +# define PAM_SM_AUTH +# define _PAM_SM_AUTHENTICATE pam_sm_authenticate +# define _PAM_SM_SETCRED pam_sm_setcred #endif + #if defined(LINUX_PAM_MODULE) && !defined(PAM_SM_ACCOUNT) -#define _PAM_SM_ACCT_MGMT 0 +# define _PAM_SM_ACCT_MGMT 0 #else -#undef PAM_SM_ACCOUNT -#define PAM_SM_ACCOUNT -#define _PAM_SM_ACCT_MGMT pam_sm_acct_mgmt +# undef PAM_SM_ACCOUNT +# define PAM_SM_ACCOUNT +# define _PAM_SM_ACCT_MGMT pam_sm_acct_mgmt #endif + #if defined(LINUX_PAM_MODULE) && !defined(PAM_SM_SESSION) -#define _PAM_SM_OPEN_SESSION 0 -#define _PAM_SM_CLOSE_SESSION 0 +# define _PAM_SM_OPEN_SESSION 0 +# define _PAM_SM_CLOSE_SESSION 0 #else -#undef PAM_SM_SESSION -#define PAM_SM_SESSION -#define _PAM_SM_OPEN_SESSION pam_sm_open_session -#define _PAM_SM_CLOSE_SESSION pam_sm_close_session +# undef PAM_SM_SESSION +# define PAM_SM_SESSION +# define _PAM_SM_OPEN_SESSION pam_sm_open_session +# define _PAM_SM_CLOSE_SESSION pam_sm_close_session #endif + #if defined(LINUX_PAM_MODULE) && !defined(PAM_SM_PASSWORD) -#define _PAM_SM_CHAUTHTOK 0 +# define _PAM_SM_CHAUTHTOK 0 #else -#undef PAM_SM_PASSWORD -#define PAM_SM_PASSWORD -#define _PAM_SM_CHAUTHTOK pam_sm_chauthtok +# undef PAM_SM_PASSWORD +# define PAM_SM_PASSWORD +# define _PAM_SM_CHAUTHTOK pam_sm_chauthtok #endif /* @@ -284,33 +310,40 @@ struct pam_module { * You are not expected to understand this. */ #if defined(__FreeBSD__) -#define PAM_SOEXT ".so" +# define PAM_SOEXT ".so" #else -#ifndef NO_STATIC_MODULES -#define NO_STATIC_MODULES -#endif +# undef NO_STATIC_MODULES +# define NO_STATIC_MODULES #endif + #if defined(__GNUC__) && !defined(__PIC__) && !defined(NO_STATIC_MODULES) /* gcc, static linking */ -#include <sys/cdefs.h> -#include <linker_set.h> -#define OPENPAM_STATIC_MODULES -#define PAM_EXTERN static -#define PAM_MODULE_ENTRY(name) \ -static char _pam_name[] = name PAM_SOEXT; \ -static struct pam_module _pam_module = { _pam_name, { \ - _PAM_SM_AUTHENTICATE, _PAM_SM_SETCRED, _PAM_SM_ACCT_MGMT, \ - _PAM_SM_OPEN_SESSION, _PAM_SM_CLOSE_SESSION, _PAM_SM_CHAUTHTOK }, \ - NULL, 0, NULL, NULL }; \ -DATA_SET(_openpam_static_modules, _pam_module) +# include <sys/cdefs.h> +# include <linker_set.h> +# define OPENPAM_STATIC_MODULES +# define PAM_EXTERN static +# define PAM_MODULE_ENTRY(name) \ + static char _pam_name[] = name PAM_SOEXT; \ + static struct pam_module _pam_module = { \ + .path = _pam_name, \ + .func = { \ + [PAM_SM_AUTHENTICATE] = _PAM_SM_AUTHENTICATE, \ + [PAM_SM_SETCRED] = _PAM_SM_SETCRED, \ + [PAM_SM_ACCT_MGMT] = _PAM_SM_ACCT_MGMT, \ + [PAM_SM_OPEN_SESSION] = _PAM_SM_OPEN_SESSION, \ + [PAM_SM_CLOSE_SESSION] = _PAM_SM_CLOSE_SESSION, \ + [PAM_SM_CHAUTHTOK] = _PAM_SM_CHAUTHTOK \ + }, \ + }; \ + DATA_SET(_openpam_static_modules, _pam_module) #else /* normal case */ -#define PAM_EXTERN -#define PAM_MODULE_ENTRY(name) +# define PAM_EXTERN +# define PAM_MODULE_ENTRY(name) #endif #ifdef __cplusplus } #endif -#endif +#endif /* !SECURITY_OPENPAM_H_INCLUDED */ |