1 /*****************************************************************
5 * Simple password checker. Just invoke and send it
6 * the password on stdin.
8 * If the password was accepted, the program exits with 0;
9 * if it was rejected, it exits with 1. Any other exit
10 * code signals an error.
13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public
15 * License as published by the Free Software Foundation; either
16 * version 2 of the License, or (at your option) any later version.
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 * General Public License for more details.
23 * You should have received a copy of the GNU General Public
24 * License along with this program; if not, write to the Free
25 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
27 * Copyright (C) 1998, Caldera, Inc.
28 * Released under the GNU General Public License
30 * Olaf Kirch <okir@caldera.de> General Framework and PAM support
31 * Christian Esken <esken@kde.org> Shadow and /etc/passwd support
32 * Oswald Buddenhagen <ossi@kde.org> Binary server mode
34 * Other parts were taken from kscreensaver's passwd.cpp
35 *****************************************************************/
40 #include <config-workspace.h>
41 #include <config-unix.h>
42 #include <config-kcheckpass.h>
53 #include <sys/types.h>
56 #define _PATH_TMP "/tmp/"
67 #include <sys/security.h>
71 /* Make sure there is only one! */
73 # undef HAVE_OSF_C2_PASSWD
74 #elif defined(HAVE_OSF_C2_PASSWD)
76 # define HAVE_AIX_AUTH
77 #elif defined(HAVE_GETSPNAM)
80 # define HAVE_ETCPASSWD
83 #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
84 # define ATTR_UNUSED __attribute__((unused))
85 # define ATTR_NORETURN __attribute__((noreturn))
86 # define ATTR_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
89 # define ATTR_NORETURN
90 # define ATTR_PRINTFLIKE(fmt,var)
93 #include "kcheckpass-enums.h"
99 /*****************************************************************
101 *****************************************************************/
102 AuthReturn
Authenticate(
108 char *(*conv
) (ConvRequest
, const char *));
110 /*****************************************************************
111 * Output a message to stderr
112 *****************************************************************/
113 void message(const char *, ...) ATTR_PRINTFLIKE(1, 2);
115 /*****************************************************************
116 * Overwrite and free the passed string
117 *****************************************************************/
118 void dispose(char *);