1 /* MODULE: auth_getpwent */
4 * Copyright (c) 1997-2000 Messaging Direct Ltd.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY MESSAGING DIRECT LTD. ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MESSAGING DIRECT LTD. OR
20 * ITS EMPLOYEES OR AGENTS BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
22 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
23 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
26 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
31 * crypt(3) based passwd file validation
35 #ident "$Id: auth_getpwent.c,v 1.7 2005/01/27 04:39:52 shadow Exp $"
38 /* PUBLIC DEPENDENCIES */
39 #include "mechanisms.h"
46 # include <openssl/des.h>
49 # endif /* WITH_SSL_DES */
50 # endif /* WITH_DES */
55 /* END PUBLIC DEPENDENCIES */
57 #define RETURN(x) return strdup(x)
59 /* FUNCTION: auth_getpwent */
61 char * /* R: allocated response string */
64 const char *login, /* I: plaintext authenticator */
65 const char *password, /* I: plaintext password */
66 const char *service __attribute__((unused)),
67 const char *realm __attribute__((unused))
72 struct passwd *pw; /* pointer to passwd file entry */
82 if (strcmp(pw->pw_passwd, (const char *)crypt(password, pw->pw_passwd))) {
89 /* END FUNCTION: auth_getpwent */
91 /* END MODULE: auth_getpwent */