mirror of
https://github.com/moparisthebest/imapfilter
synced 2024-08-13 16:53:51 -04:00
Correct some small details here and there.
This commit is contained in:
parent
b67ae8209b
commit
820e9db522
@ -29,8 +29,7 @@ auth_cram_md5(const char *user, const char *pass, unsigned char *chal)
|
|||||||
|
|
||||||
EVP_DecodeBlock(resp, chal, strlen((char *)(chal)));
|
EVP_DecodeBlock(resp, chal, strlen((char *)(chal)));
|
||||||
|
|
||||||
HMAC_Init(&hmac, (const unsigned char *)pass, strlen(pass),
|
HMAC_Init(&hmac, (const unsigned char *)pass, strlen(pass), EVP_md5());
|
||||||
EVP_md5());
|
|
||||||
HMAC_Update(&hmac, resp, strlen((char *)(resp)));
|
HMAC_Update(&hmac, resp, strlen((char *)(resp)));
|
||||||
HMAC_Final(&hmac, md, &mdlen);
|
HMAC_Final(&hmac, md, &mdlen);
|
||||||
|
|
||||||
|
@ -148,7 +148,8 @@ open_debug(void)
|
|||||||
|
|
||||||
debugfp = fopen(opts.debug, "w");
|
debugfp = fopen(opts.debug, "w");
|
||||||
if (debugfp == NULL) {
|
if (debugfp == NULL) {
|
||||||
error("opening debug file %s: %s\n", opts.debug, strerror(errno));
|
error("opening debug file %s: %s\n", opts.debug,
|
||||||
|
strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -219,7 +219,8 @@ response_generic(session *ssn, int tag)
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
buffer_check(&ibuf, ibuf.len + INPUT_BUF);
|
buffer_check(&ibuf, ibuf.len + INPUT_BUF);
|
||||||
if ((n = receive_response(ssn, ibuf.data + ibuf.len, 0, 1)) == -1)
|
if ((n = receive_response(ssn, ibuf.data + ibuf.len, 0, 1)) ==
|
||||||
|
-1)
|
||||||
return -1;
|
return -1;
|
||||||
ibuf.len += n;
|
ibuf.len += n;
|
||||||
|
|
||||||
@ -247,7 +248,8 @@ response_continuation(session *ssn)
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
buffer_check(&ibuf, ibuf.len + INPUT_BUF);
|
buffer_check(&ibuf, ibuf.len + INPUT_BUF);
|
||||||
if ((n = receive_response(ssn, ibuf.data + ibuf.len, 0, 1)) == -1)
|
if ((n = receive_response(ssn, ibuf.data + ibuf.len, 0, 1)) ==
|
||||||
|
-1)
|
||||||
return -1;
|
return -1;
|
||||||
ibuf.len += n;
|
ibuf.len += n;
|
||||||
|
|
||||||
@ -353,8 +355,9 @@ response_authenticate(session *ssn, int tag, unsigned char **cont)
|
|||||||
|
|
||||||
if ((r = response_continuation(ssn)) == STATUS_CONTINUE &&
|
if ((r = response_continuation(ssn)) == STATUS_CONTINUE &&
|
||||||
!regexec(re->preg, ibuf.data, re->nmatch, re->pmatch, 0))
|
!regexec(re->preg, ibuf.data, re->nmatch, re->pmatch, 0))
|
||||||
*cont = (unsigned char *)xstrndup(ibuf.data + re->pmatch[1].rm_so,
|
*cont = (unsigned char *)xstrndup(ibuf.data +
|
||||||
re->pmatch[1].rm_eo - re->pmatch[1].rm_so);
|
re->pmatch[1].rm_so, re->pmatch[1].rm_eo -
|
||||||
|
re->pmatch[1].rm_so);
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
@ -571,7 +574,8 @@ response_search(session *ssn, int tag, char **mesgs)
|
|||||||
*m = '\0';
|
*m = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
min = (unsigned int)(re->pmatch[1].rm_eo - re->pmatch[1].rm_so) < ibuf.len ?
|
min = (unsigned int)(re->pmatch[1].rm_eo -
|
||||||
|
re->pmatch[1].rm_so) < ibuf.len ?
|
||||||
(unsigned int)(re->pmatch[1].rm_eo - re->pmatch[1].rm_so) :
|
(unsigned int)(re->pmatch[1].rm_eo - re->pmatch[1].rm_so) :
|
||||||
ibuf.len;
|
ibuf.len;
|
||||||
|
|
||||||
@ -775,7 +779,8 @@ response_fetchbody(session *ssn, int tag, char **body, size_t *len)
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
buffer_check(&ibuf, ibuf.len + INPUT_BUF);
|
buffer_check(&ibuf, ibuf.len + INPUT_BUF);
|
||||||
if ((n = receive_response(ssn, ibuf.data + ibuf.len, 0, 1)) == -1)
|
if ((n = receive_response(ssn, ibuf.data + ibuf.len, 0, 1)) ==
|
||||||
|
-1)
|
||||||
return -1;
|
return -1;
|
||||||
ibuf.len += n;
|
ibuf.len += n;
|
||||||
|
|
||||||
|
41
src/socket.c
41
src/socket.c
@ -125,6 +125,7 @@ open_secure_connection(session *ssn)
|
|||||||
"connection has been closed cleanly\n",
|
"connection has been closed cleanly\n",
|
||||||
ssn->server);
|
ssn->server);
|
||||||
goto fail;
|
goto fail;
|
||||||
|
case SSL_ERROR_NONE:
|
||||||
case SSL_ERROR_WANT_CONNECT:
|
case SSL_ERROR_WANT_CONNECT:
|
||||||
case SSL_ERROR_WANT_ACCEPT:
|
case SSL_ERROR_WANT_ACCEPT:
|
||||||
case SSL_ERROR_WANT_X509_LOOKUP:
|
case SSL_ERROR_WANT_X509_LOOKUP:
|
||||||
@ -149,7 +150,7 @@ open_secure_connection(session *ssn)
|
|||||||
NULL));
|
NULL));
|
||||||
goto fail;
|
goto fail;
|
||||||
default:
|
default:
|
||||||
goto fail;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (get_option_boolean("certificates") && get_cert(ssn) == -1)
|
if (get_option_boolean("certificates") && get_cert(ssn) == -1)
|
||||||
@ -294,9 +295,7 @@ socket_secure_read(session *ssn, char *buf, size_t len)
|
|||||||
int r, e;
|
int r, e;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
r = (ssize_t) SSL_read(ssn->sslsocket, buf, len);
|
if ((r = (ssize_t) SSL_read(ssn->sslsocket, buf, len)) > 0)
|
||||||
|
|
||||||
if (r > 0)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
switch (SSL_get_error(ssn->sslsocket, r)) {
|
switch (SSL_get_error(ssn->sslsocket, r)) {
|
||||||
@ -304,6 +303,7 @@ socket_secure_read(session *ssn, char *buf, size_t len)
|
|||||||
error("reading data; the connection has been closed "
|
error("reading data; the connection has been closed "
|
||||||
"cleanly\n");
|
"cleanly\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
case SSL_ERROR_NONE:
|
||||||
case SSL_ERROR_WANT_READ:
|
case SSL_ERROR_WANT_READ:
|
||||||
case SSL_ERROR_WANT_WRITE:
|
case SSL_ERROR_WANT_WRITE:
|
||||||
case SSL_ERROR_WANT_CONNECT:
|
case SSL_ERROR_WANT_CONNECT:
|
||||||
@ -326,7 +326,7 @@ socket_secure_read(session *ssn, char *buf, size_t len)
|
|||||||
ERR_error_string(ERR_get_error(), NULL));
|
ERR_error_string(ERR_get_error(), NULL));
|
||||||
return -1;
|
return -1;
|
||||||
default:
|
default:
|
||||||
return -1;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -342,10 +342,10 @@ ssize_t
|
|||||||
socket_write(session *ssn, const char *buf, size_t len)
|
socket_write(session *ssn, const char *buf, size_t len)
|
||||||
{
|
{
|
||||||
int s;
|
int s;
|
||||||
ssize_t w, wt;
|
ssize_t r, t;
|
||||||
fd_set fds;
|
fd_set fds;
|
||||||
|
|
||||||
w = wt = 0;
|
r = t = 0;
|
||||||
s = 1;
|
s = 1;
|
||||||
|
|
||||||
FD_ZERO(&fds);
|
FD_ZERO(&fds);
|
||||||
@ -356,28 +356,28 @@ socket_write(session *ssn, const char *buf, size_t len)
|
|||||||
FD_ISSET(ssn->socket, &fds))) {
|
FD_ISSET(ssn->socket, &fds))) {
|
||||||
#ifndef NO_SSLTLS
|
#ifndef NO_SSLTLS
|
||||||
if (ssn->sslsocket) {
|
if (ssn->sslsocket) {
|
||||||
w = socket_secure_write(ssn, buf, len);
|
r = socket_secure_write(ssn, buf, len);
|
||||||
|
|
||||||
if (w <= 0)
|
if (r <= 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
w = write(ssn->socket, buf, len);
|
r = write(ssn->socket, buf, len);
|
||||||
|
|
||||||
if (w == -1) {
|
if (r == -1) {
|
||||||
error("writing data; %s\n",
|
error("writing data; %s\n",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
goto fail;
|
goto fail;
|
||||||
} else if (w == 0) {
|
} else if (r == 0) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (w > 0) {
|
if (r > 0) {
|
||||||
len -= w;
|
len -= r;
|
||||||
buf += w;
|
buf += r;
|
||||||
wt += w;
|
t += r;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -390,7 +390,7 @@ socket_write(session *ssn, const char *buf, size_t len)
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
return wt;
|
return t;
|
||||||
fail:
|
fail:
|
||||||
close_connection(ssn);
|
close_connection(ssn);
|
||||||
|
|
||||||
@ -408,9 +408,7 @@ socket_secure_write(session *ssn, const char *buf, size_t len)
|
|||||||
int r, e;
|
int r, e;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
r = (ssize_t) SSL_write(ssn->sslsocket, buf, len);
|
if ((r = (ssize_t) SSL_write(ssn->sslsocket, buf, len)) > 0)
|
||||||
|
|
||||||
if (r > 0)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
switch (SSL_get_error(ssn->sslsocket, r)) {
|
switch (SSL_get_error(ssn->sslsocket, r)) {
|
||||||
@ -418,6 +416,7 @@ socket_secure_write(session *ssn, const char *buf, size_t len)
|
|||||||
error("writing data; the connection has been closed "
|
error("writing data; the connection has been closed "
|
||||||
"cleanly\n");
|
"cleanly\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
case SSL_ERROR_NONE:
|
||||||
case SSL_ERROR_WANT_READ:
|
case SSL_ERROR_WANT_READ:
|
||||||
case SSL_ERROR_WANT_WRITE:
|
case SSL_ERROR_WANT_WRITE:
|
||||||
case SSL_ERROR_WANT_CONNECT:
|
case SSL_ERROR_WANT_CONNECT:
|
||||||
@ -440,7 +439,7 @@ socket_secure_write(session *ssn, const char *buf, size_t len)
|
|||||||
ERR_error_string(ERR_get_error(), NULL));
|
ERR_error_string(ERR_get_error(), NULL));
|
||||||
return -1;
|
return -1;
|
||||||
default:
|
default:
|
||||||
return -1;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user