summaryrefslogtreecommitdiffstats
path: root/contrib/openpam/include/security/openpam.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/openpam/include/security/openpam.h')
-rw-r--r--contrib/openpam/include/security/openpam.h167
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 */
OpenPOWER on IntegriCloud