Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Apr 2002 11:17:01 -0700 (PDT)
From:      Dag-Erling Smorgrav <des@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 9623 for review
Message-ID:  <200204121817.g3CIH1V50122@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=9623

Change 9623 by des@des.at.des.thinksec.com on 2002/04/12 11:16:08

	Adopt the same preprocessor tricks that Linux-PAM uses for modules.
	This reduces the amount of changes needed to adopt modules written
	for Linux-PAM.
	
	Sponsored by:	DARPA, NAI Labs

Affected files ...

... //depot/projects/openpam/include/security/openpam.h#16 edit
... //depot/projects/openpam/include/security/pam_modules.h#7 edit

Differences ...

==== //depot/projects/openpam/include/security/openpam.h#16 (text+ko) ====

@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $P4: //depot/projects/openpam/include/security/openpam.h#15 $
+ * $P4: //depot/projects/openpam/include/security/openpam.h#16 $
  */
 
 #ifndef _SECURITY_OPENPAM_H_INCLUDED
@@ -208,6 +208,46 @@
 };
 
 /*
+ * Source-code compatibility with Linux-PAM modules
+ */
+#if defined(PAM_SM_AUTH) || defined(PAM_SM_ACCOUNT) || \
+	defined(PAM_SM_SESSION) || defined(PAM_SM_PASSWORD)
+#define LINUX_PAM_MODULE
+#endif
+#if defined(LINUX_PAM_MODULE) && !defined(PAM_SM_AUTH)
+#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
+#endif
+#if defined(LINUX_PAM_MODULE) && !defined(PAM_SM_ACCOUNT)
+#define _PAM_SM_ACCT_MGMT	0
+#else
+#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
+#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
+#endif
+#if defined(LINUX_PAM_MODULE) && !defined(PAM_SM_PASSWORD)
+#define _PAM_SM_CHAUTHTOK	0
+#else
+#undef PAM_SM_PASSWORD
+#define PAM_SM_PASSWORD
+#define _PAM_SM_CHAUTHTOK	pam_sm_chauthtok
+#endif
+
+/*
  * Infrastructure for static modules using GCC linker sets.
  * You are not expected to understand this.
  */
@@ -227,8 +267,8 @@
 #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 },	\
+    _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)
 #else

==== //depot/projects/openpam/include/security/pam_modules.h#7 (text+ko) ====

@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $P4: //depot/projects/openpam/include/security/pam_modules.h#6 $
+ * $P4: //depot/projects/openpam/include/security/pam_modules.h#7 $
  */
 
 #ifndef _PAM_MODULES_H_INCLUDED
@@ -49,41 +49,53 @@
  * XSSO 4.2.2, 6
  */
 
+#if defined(PAM_SM_ACCOUNT)
 PAM_EXTERN int
 pam_sm_acct_mgmt(pam_handle_t *_pamh,
 	int _flags,
 	int _argc,
 	const char **_argv);
+#endif
 
+#if defined(PAM_SM_AUTH)
 PAM_EXTERN int
 pam_sm_authenticate(pam_handle_t *_pamh,
 	int _flags,
 	int _argc,
 	const char **_argv);
+#endif
 
+#if defined(PAM_SM_PASSWORD)
 PAM_EXTERN int
 pam_sm_chauthtok(pam_handle_t *_pamh,
 	int _flags,
 	int _argc,
 	const char **_argv);
+#endif
 
+#if defined(PAM_SM_SESSION)
 PAM_EXTERN int
 pam_sm_close_session(pam_handle_t *_pamh,
 	int _flags,
 	int _args,
 	const char **_argv);
+#endif
 
+#if defined(PAM_SM_SESSION)
 PAM_EXTERN int
 pam_sm_open_session(pam_handle_t *_pamh,
 	int _flags,
 	int _argc,
 	const char **_argv);
+#endif
 
+#if defined(PAM_SM_AUTH)
 PAM_EXTERN int
 pam_sm_setcred(pam_handle_t *_pamh,
 	int _flags,
 	int _argc,
 	const char **_argv);
+#endif
 
 /*
  * Single Sign-On extensions

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe p4-projects" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204121817.g3CIH1V50122>