pam_self.c revision 87396
138032Speter/*-
2261370Sgshapiro * Copyright (c) 2001 Mark R V Murray
364562Sgshapiro * All rights reserved.
438032Speter * Copyright (c) 2001 Networks Associates Technologies, Inc.
538032Speter * All rights reserved.
638032Speter *
738032Speter * Portions of this software were developed for the FreeBSD Project by
838032Speter * ThinkSec AS and NAI Labs, the Security Research Division of Network
938032Speter * Associates, Inc.  under DARPA/SPAWAR contract N66001-01-C-8035
1038032Speter * ("CBOSS"), as part of the DARPA CHATS research program.
1138032Speter *
1238032Speter * Redistribution and use in source and binary forms, with or without
1338032Speter * modification, are permitted provided that the following conditions
1464562Sgshapiro * are met:
1564562Sgshapiro * 1. Redistributions of source code must retain the above copyright
16266711Sgshapiro *    notice, this list of conditions and the following disclaimer.
1764562Sgshapiro * 2. Redistributions in binary form must reproduce the above copyright
18168515Sgshapiro *    notice, this list of conditions and the following disclaimer in the
1990792Sgshapiro *    documentation and/or other materials provided with the distribution.
2090792Sgshapiro * 3. The name of the author may not be used to endorse or promote
2164562Sgshapiro *    products derived from this software without specific prior written
2290792Sgshapiro *    permission.
23132943Sgshapiro *
24132943Sgshapiro * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
25132943Sgshapiro * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26132943Sgshapiro * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27132943Sgshapiro * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
28132943Sgshapiro * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29132943Sgshapiro * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30132943Sgshapiro * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31132943Sgshapiro * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32132943Sgshapiro * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33132943Sgshapiro * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34132943Sgshapiro * SUCH DAMAGE.
35132943Sgshapiro */
36132943Sgshapiro
37132943Sgshapiro#include <sys/cdefs.h>
38132943Sgshapiro__FBSDID("$FreeBSD: head/lib/libpam/modules/pam_self/pam_self.c 87396 2001-12-05 15:55:14Z des $");
39132943Sgshapiro
40132943Sgshapiro#define _BSD_SOURCE
41132943Sgshapiro
42132943Sgshapiro#include <unistd.h>
43132943Sgshapiro#include <syslog.h>
44132943Sgshapiro
45132943Sgshapiro#define PAM_SM_AUTH
46132943Sgshapiro#define PAM_SM_ACCOUNT
4738032Speter#define PAM_SM_SESSION
4838032Speter#define PAM_SM_PASSWORD
4990792Sgshapiro
5038032Speter#include <security/pam_modules.h>
5138032Speter#include <pam_mod_misc.h>
5238032Speter
5390792SgshapiroPAM_EXTERN int
5438032Speterpam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
5538032Speter{
5638032Speter	struct options options;
5738032Speter	const char *luser, *ruser;
5838032Speter	int r;
5938032Speter
6090792Sgshapiro	pam_std_option(&options, NULL, argc, argv);
6138032Speter
6290792Sgshapiro	PAM_LOG("Options processed");
6338032Speter
6438032Speter	r = pam_get_item(pamh, PAM_USER, (const void **)&luser);
6538032Speter	if (r != PAM_SUCCESS)
6638032Speter		PAM_RETURN(r);
6738032Speter	if (luser == NULL)
6838032Speter		PAM_RETURN(PAM_USER_UNKNOWN);
6938032Speter
7038032Speter	r = pam_get_item(pamh, PAM_RUSER, (const void **)&ruser);
7138032Speter	if (r != PAM_SUCCESS)
7238032Speter		PAM_RETURN(r);
7338032Speter
7438032Speter	if (strcmp(luser, ruser) == 0)
7538032Speter		PAM_RETURN(PAM_SUCCESS);
7638032Speter
7738032Speter	PAM_VERBOSE_ERROR("Refused; source and target users differ");
7864562Sgshapiro
7990792Sgshapiro	PAM_RETURN(PAM_AUTH_ERR);
8038032Speter}
8138032Speter
8238032SpeterPAM_EXTERN int
8338032Speterpam_sm_setcred(pam_handle_t *pamh, int flags, int argc, const char **argv)
8438032Speter{
8538032Speter	struct options options;
8638032Speter
8738032Speter	pam_std_option(&options, NULL, argc, argv);
8838032Speter
8938032Speter	PAM_LOG("Options processed");
9038032Speter
9138032Speter	PAM_RETURN(PAM_SUCCESS);
9238032Speter}
9338032Speter
9438032SpeterPAM_EXTERN int
95110560Sgshapiropam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc ,const char **argv)
9690792Sgshapiro{
97141858Sgshapiro	struct options options;
98141858Sgshapiro
99110560Sgshapiro	pam_std_option(&options, NULL, argc, argv);
100110560Sgshapiro
101110560Sgshapiro	PAM_LOG("Options processed");
102110560Sgshapiro
103110560Sgshapiro	PAM_RETURN(PAM_IGNORE);
104110560Sgshapiro}
105110560Sgshapiro
106110560SgshapiroPAM_EXTERN int
107110560Sgshapiropam_sm_chauthtok(pam_handle_t *pamh, int flags, int argc, const char **argv)
108110560Sgshapiro{
109110560Sgshapiro	struct options options;
110110560Sgshapiro
111110560Sgshapiro	pam_std_option(&options, NULL, argc, argv);
112110560Sgshapiro
113110560Sgshapiro	PAM_LOG("Options processed");
114110560Sgshapiro
115110560Sgshapiro	PAM_RETURN(PAM_IGNORE);
116110560Sgshapiro}
117110560Sgshapiro
118110560SgshapiroPAM_EXTERN int
119110560Sgshapiropam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv)
120110560Sgshapiro{
121110560Sgshapiro	struct options options;
122110560Sgshapiro
123110560Sgshapiro	pam_std_option(&options, NULL, argc, argv);
124110560Sgshapiro
125110560Sgshapiro	PAM_LOG("Options processed");
126110560Sgshapiro
12738032Speter	PAM_RETURN(PAM_IGNORE);
12838032Speter}
12938032Speter
13038032SpeterPAM_EXTERN int
13138032Speterpam_sm_close_session(pam_handle_t *pamh, int flags, int argc, const char **argv)
13238032Speter{
13338032Speter	struct options options;
13438032Speter
13538032Speter	pam_std_option(&options, NULL, argc, argv);
13638032Speter
13790792Sgshapiro	PAM_LOG("Options processed");
13838032Speter
13938032Speter	PAM_RETURN(PAM_IGNORE);
14038032Speter}
14138032Speter
14238032SpeterPAM_MODULE_ENTRY("pam_self");
14338032Speter