projects
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Various SASL fixes.
[exim.git]
/
src
/
src
/
auths
/
pwcheck.c
diff --git
a/src/src/auths/pwcheck.c
b/src/src/auths/pwcheck.c
index f477b6f0664334ce586512af8af8cc64cf9b4a57..645265daa0874fdd83706a2397ac36aa5f72b966 100644
(file)
--- a/
src/src/auths/pwcheck.c
+++ b/
src/src/auths/pwcheck.c
@@
-1,5
+1,3
@@
-/* $Cambridge: exim/src/src/auths/pwcheck.c,v 1.1 2004/10/07 13:10:01 ph10 Exp $ */
-
/* SASL server API implementation
* Rob Siemborski
* Tim Martin
/* SASL server API implementation
* Rob Siemborski
* Tim Martin
@@
-50,6
+48,9
@@
* Oct 2001 - Apr 2002: Slightly modified by Philip Hazel.
* Aug 2003: new code for saslauthd from Alexander S. Sabourenkov incorporated
* by Philip Hazel (minor mods to avoid compiler warnings)
* Oct 2001 - Apr 2002: Slightly modified by Philip Hazel.
* Aug 2003: new code for saslauthd from Alexander S. Sabourenkov incorporated
* by Philip Hazel (minor mods to avoid compiler warnings)
+ * Oct 2006: (PH) removed redundant tests on "reply" being NULL - some were
+ * missing, and confused someone who was using this code for some
+ * other purpose. Here in Exim, "reply" is never NULL.
*
* screwdriver@lxnt.info
*
*
* screwdriver@lxnt.info
*
@@
-107,7
+108,7
@@
return PWCHECK_FAIL;
struct iovec iov[2];
static char response[1024];
struct iovec iov[2];
static char response[1024];
- if (reply) { *reply = NULL; }
+ *reply = NULL;
s = socket(AF_UNIX, SOCK_STREAM, 0);
if (s == -1) { return PWCHECK_FAIL; }
s = socket(AF_UNIX, SOCK_STREAM, 0);
if (s == -1) { return PWCHECK_FAIL; }
@@
-119,7
+120,7
@@
return PWCHECK_FAIL;
if (r == -1) {
DEBUG(D_auth)
debug_printf("Cannot connect to pwcheck daemon (at '%s')\n",CYRUS_PWCHECK_SOCKET);
if (r == -1) {
DEBUG(D_auth)
debug_printf("Cannot connect to pwcheck daemon (at '%s')\n",CYRUS_PWCHECK_SOCKET);
- if (reply) { *reply = "cannot connect to pwcheck daemon"; }
+ *reply = "cannot connect to pwcheck daemon";
return PWCHECK_FAIL;
}
return PWCHECK_FAIL;
}
@@
-137,14
+138,14
@@
return PWCHECK_FAIL;
start += n;
}
start += n;
}
- close(s);
+
(void)
close(s);
if (start > 1 && !strncmp(response, "OK", 2)) {
return PWCHECK_OK;
}
response[start] = '\0';
if (start > 1 && !strncmp(response, "OK", 2)) {
return PWCHECK_OK;
}
response[start] = '\0';
- if (reply) { *reply = response; }
+ *reply = response;
return PWCHECK_NO;
}
return PWCHECK_NO;
}
@@
-183,7
+184,7
@@
int saslauthd_verify_password(const uschar *userid,
const uschar *realm,
const uschar **reply)
{
const uschar *realm,
const uschar **reply)
{
- uschar *daemon_reply;
+ uschar *daemon_reply
= NULL
;
int s, r;
struct sockaddr_un srvaddr;
int s, r;
struct sockaddr_un srvaddr;
@@
-191,13
+192,11
@@
int saslauthd_verify_password(const uschar *userid,
debug_printf("saslauthd userid='%s' servicename='%s'"
" realm='%s'\n", userid, service, realm );
debug_printf("saslauthd userid='%s' servicename='%s'"
" realm='%s'\n", userid, service, realm );
- if (reply)
- *reply = NULL;
+ *reply = NULL;
s = socket(AF_UNIX, SOCK_STREAM, 0);
if (s == -1) {
s = socket(AF_UNIX, SOCK_STREAM, 0);
if (s == -1) {
- if (reply)
- *reply = CUstrerror(errno);
+ *reply = CUstrerror(errno);
return PWCHECK_FAIL;
}
return PWCHECK_FAIL;
}
@@
-207,27
+206,26
@@
int saslauthd_verify_password(const uschar *userid,
sizeof(srvaddr.sun_path));
r = connect(s, (struct sockaddr *)&srvaddr, sizeof(srvaddr));
if (r == -1) {
sizeof(srvaddr.sun_path));
r = connect(s, (struct sockaddr *)&srvaddr, sizeof(srvaddr));
if (r == -1) {
-
DEBUG(D_auth)
+ DEBUG(D_auth)
debug_printf("Cannot connect to saslauthd daemon (at '%s'): %s\n",
CYRUS_SASLAUTHD_SOCKET, strerror(errno));
debug_printf("Cannot connect to saslauthd daemon (at '%s'): %s\n",
CYRUS_SASLAUTHD_SOCKET, strerror(errno));
- if (reply)
- *reply = string_sprintf("cannot connect to saslauthd daemon at "
- "%s: %s", CYRUS_SASLAUTHD_SOCKET,
- strerror(errno));
+ *reply = string_sprintf("cannot connect to saslauthd daemon at "
+ "%s: %s", CYRUS_SASLAUTHD_SOCKET,
+ strerror(errno));
return PWCHECK_FAIL;
}
if ( write_string(s, userid, Ustrlen(userid)) < 0) {
DEBUG(D_auth)
debug_printf("Failed to send userid to saslauthd daemon \n");
return PWCHECK_FAIL;
}
if ( write_string(s, userid, Ustrlen(userid)) < 0) {
DEBUG(D_auth)
debug_printf("Failed to send userid to saslauthd daemon \n");
- close(s);
+
(void)
close(s);
return PWCHECK_FAIL;
}
if ( write_string(s, password, Ustrlen(password)) < 0) {
DEBUG(D_auth)
debug_printf("Failed to send password to saslauthd daemon \n");
return PWCHECK_FAIL;
}
if ( write_string(s, password, Ustrlen(password)) < 0) {
DEBUG(D_auth)
debug_printf("Failed to send password to saslauthd daemon \n");
- close(s);
+
(void)
close(s);
return PWCHECK_FAIL;
}
return PWCHECK_FAIL;
}
@@
-236,25
+234,25
@@
int saslauthd_verify_password(const uschar *userid,
if ( write_string(s, service, Ustrlen(service)) < 0) {
DEBUG(D_auth)
debug_printf("Failed to send service name to saslauthd daemon \n");
if ( write_string(s, service, Ustrlen(service)) < 0) {
DEBUG(D_auth)
debug_printf("Failed to send service name to saslauthd daemon \n");
- close(s);
+
(void)
close(s);
return PWCHECK_FAIL;
}
if ( write_string(s, realm, Ustrlen(realm)) < 0) {
DEBUG(D_auth)
debug_printf("Failed to send realm to saslauthd daemon \n");
return PWCHECK_FAIL;
}
if ( write_string(s, realm, Ustrlen(realm)) < 0) {
DEBUG(D_auth)
debug_printf("Failed to send realm to saslauthd daemon \n");
- close(s);
+
(void)
close(s);
return PWCHECK_FAIL;
}
if ( read_string(s, &daemon_reply ) < 2) {
DEBUG(D_auth)
debug_printf("Corrupted answer '%s' received. \n", daemon_reply);
return PWCHECK_FAIL;
}
if ( read_string(s, &daemon_reply ) < 2) {
DEBUG(D_auth)
debug_printf("Corrupted answer '%s' received. \n", daemon_reply);
- close(s);
+
(void)
close(s);
return PWCHECK_FAIL;
}
return PWCHECK_FAIL;
}
- close(s);
+
(void)
close(s);
DEBUG(D_auth)
debug_printf("Answer '%s' received. \n", daemon_reply);
DEBUG(D_auth)
debug_printf("Answer '%s' received. \n", daemon_reply);