nm4 2009/11/11 10:08:02 GMT
Modified files:
exim-src/src dcc.c dns.c malware.c mime.c receive.c
spf.c
Log:
Applied signed/unsigned fixes. Need confirmation that this completely deals with bug. Related: #905
Revision Changes Path
1.4 +12 -32 exim/exim-src/src/dcc.c
1.20 +1 -1 exim/exim-src/src/dns.c
1.18 +1 -1 exim/exim-src/src/malware.c
1.19 +2 -2 exim/exim-src/src/mime.c
1.51 +3 -2 exim/exim-src/src/receive.c
1.9 +5 -5 exim/exim-src/src/spf.c
Index: dcc.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/dcc.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- dcc.c 13 Oct 2009 15:08:03 -0000 1.3
+++ dcc.c 11 Nov 2009 10:08:01 -0000 1.4
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/dcc.c,v 1.3 2009/10/13 15:08:03 tom Exp $ */
+/* $Cambridge: exim/exim-src/src/dcc.c,v 1.4 2009/11/11 10:08:01 nm4 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -50,16 +50,8 @@
int dcc_process(uschar **listptr) {
int sep = 0;
uschar *list = *listptr;
- uschar *user_name;
- uschar *body_begin;
- uschar user_name_buffer[128];
- unsigned long mbox_size;
FILE *data_file;
- int dcc_sock;
- uschar dcc_buffer[32600];
uschar *dcc_daemon_ip = US"";
- int dcc_daemon_port = 6276;
- uschar *dcc_request = US"header";
uschar *dcc_default_ip_option = US"127.0.0.1";
uschar *dcc_ip_option = US"";
uschar *dcc_helo_option = US"localhost";
@@ -67,7 +59,8 @@
uschar *xtra_hdrs = NULL;
/* from local_scan */
- int i, j, k, c, retval, sockfd, servlen, resp, portnr, line;
+ int i, j, k, c, retval, sockfd, servlen, resp, line;
+ unsigned int portnr;
struct sockaddr_un serv_addr;
struct sockaddr_in serv_addr_in;
struct hostent *ipaddress;
@@ -82,23 +75,10 @@
uschar mbox_path[1024];
uschar message_subdir[2];
struct header_line *dcchdr;
- struct recipient_item *dcc_rcpt = recipients_list;
uschar *dcc_acl_options;
uschar dcc_acl_options_buffer[10];
uschar dcc_xtra_hdrs[1024];
- int offset, result;
- uschar *p,*q;
- int override = 0;
- time_t start;
- struct sockaddr_un server;
-#ifndef NO_POLL_H
- struct pollfd pollfd;
-#endif
-
- /* stop compiler warning */
- result = result;
-
/* grep 1st option */
if ((dcc_acl_options = string_nextinlist(&list, &sep,
dcc_acl_options_buffer,
@@ -153,7 +133,7 @@
if (dccifd_address[0] == '/')
Ustrncpy(sockpath, dccifd_address, sizeof(sockpath));
else
- if( sscanf(CS dccifd_address, "%s %u", sockip, portnr) != 2) {
+ if( sscanf(CS dccifd_address, "%s %u", sockip, &portnr) != 2) {
log_write(0, LOG_MAIN,
"dcc acl condition: warning - invalid dccifd address: '%s'", dccifd_address);
(void)fclose(data_file);
@@ -329,7 +309,7 @@
Ustrncat(sendbuf, "\n", sizeof(sendbuf)-Ustrlen(sendbuf)-1);
flushbuffer(sockfd, sendbuf);
DEBUG(D_acl)
- debug_printf("\n****************************\n", sendbuf);
+ debug_printf("\n****************************\n%s", sendbuf);
/* Clear the input buffer */
bzero(sendbuf, sizeof(sendbuf));
@@ -380,7 +360,7 @@
/* Let's read from the socket until there's nothing left to read */
bzero(recvbuf, sizeof(recvbuf));
- while(resp = read(sockfd, recvbuf, sizeof(recvbuf)-1) > 0) {
+ while((resp = read(sockfd, recvbuf, sizeof(recvbuf)-1)) > 0) {
/* How much did we get from the socket */
c = Ustrlen(recvbuf) + 1;
DEBUG(D_acl)
@@ -405,13 +385,13 @@
DEBUG(D_acl)
debug_printf("Overall result = A\treturning OK\n");
Ustrcpy(dcc_return_text, "Mail accepted by DCC");
- dcc_result = "A";
+ dcc_result = US"A";
retval = OK;
}
else if(recvbuf[i] == 'R') {
DEBUG(D_acl)
debug_printf("Overall result = R\treturning FAIL\n");
- dcc_result = "R";
+ dcc_result = US"R";
retval = FAIL;
if(sender_host_name) {
log_write(0, LOG_MAIN, "H=%s [%s] F=<%s>: rejected by DCC", sender_host_name, sender_host_address, sender_address);
@@ -427,14 +407,14 @@
Ustrcpy(dcc_return_text, "Not all recipients accepted by DCC");
/* Since we're in an ACL we want a global result
* so we accept for all */
- dcc_result = "A";
+ dcc_result = US"A";
retval = OK;
}
else if(recvbuf[i] == 'G') {
DEBUG(D_acl)
debug_printf("Overall result = G\treturning FAIL\n");
Ustrcpy(dcc_return_text, "Greylisted by DCC");
- dcc_result = "G";
+ dcc_result = US"G";
retval = FAIL;
}
else if(recvbuf[i] == 'T') {
@@ -443,7 +423,7 @@
retval = DEFER;
log_write(0,LOG_MAIN,"Temporary error with DCC: %s\n", recvbuf);
Ustrcpy(dcc_return_text, "Temporary error with DCC");
- dcc_result = "T";
+ dcc_result = US"T";
}
else {
DEBUG(D_acl)
@@ -451,7 +431,7 @@
retval = DEFER;
log_write(0,LOG_MAIN,"Unknown DCC response: %s\n", recvbuf);
Ustrcpy(dcc_return_text, "Unknown DCC response");
- dcc_result = "T";
+ dcc_result = US"T";
}
}
else {
@@ -517,7 +497,7 @@
/* check if we should add additional headers passed in acl_m_dcc_add_header */
if(dcc_direct_add_header) {
- if (((xtra_hdrs = expand_string("$acl_m_dcc_add_header")) != NULL) && (xtra_hdrs[0] != '\0')) {
+ if (((xtra_hdrs = expand_string(US"$acl_m_dcc_add_header")) != NULL) && (xtra_hdrs[0] != '\0')) {
Ustrncpy(dcc_xtra_hdrs, xtra_hdrs, sizeof(dcc_xtra_hdrs) - 2);
if (dcc_xtra_hdrs[Ustrlen(dcc_xtra_hdrs)-1] != '\n')
Ustrcat(dcc_xtra_hdrs, "\n");
Index: dns.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/dns.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- dns.c 19 Oct 2009 14:20:58 -0000 1.19
+++ dns.c 11 Nov 2009 10:08:01 -0000 1.20
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/dns.c,v 1.19 2009/10/19 14:20:58 tom Exp $ */
+/* $Cambridge: exim/exim-src/src/dns.c,v 1.20 2009/11/11 10:08:01 nm4 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -462,8 +462,8 @@
int
dns_basic_lookup(dns_answer *dnsa, uschar *name, int type)
{
-int rc = -1;
#ifndef STAND_ALONE
+int rc = -1;
uschar *save;
#endif
Index: malware.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/malware.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- malware.c 5 Nov 2009 19:40:51 -0000 1.17
+++ malware.c 11 Nov 2009 10:08:01 -0000 1.18
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/malware.c,v 1.17 2009/11/05 19:40:51 nm4 Exp $ */
+/* $Cambridge: exim/exim-src/src/malware.c,v 1.18 2009/11/11 10:08:01 nm4 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -231,7 +231,7 @@
if ( Ustrstr(buf, US"<detected type=\"") != NULL ) {
detected = 1;
} else if ( detected && (strhelper = Ustrstr(buf, US"<name>")) ) {
- if (strhelper2 = (Ustrstr(buf, US"</name>"))) {
+ if ((strhelper2 = Ustrstr(buf, US"</name>")) != NULL) {
*strhelper2 = '\0';
Ustrcpy(malware_name_buffer, strhelper + 6);
}
Index: mime.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/mime.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- mime.c 9 Nov 2009 14:31:24 -0000 1.18
+++ mime.c 11 Nov 2009 10:08:02 -0000 1.19
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/mime.c,v 1.18 2009/11/09 14:31:24 tom Exp $ */
+/* $Cambridge: exim/exim-src/src/mime.c,v 1.19 2009/11/11 10:08:02 nm4 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -106,7 +106,7 @@
opos = obuf;
- while (fgets((char *)ibuf, MIME_MAX_LINE_LENGTH, in) != NULL)
+ while (Ufgets(ibuf, MIME_MAX_LINE_LENGTH, in) != NULL)
{
if (boundary != NULL
&& Ustrncmp(ibuf, "--", 2) == 0
@@ -153,7 +153,7 @@
return -1; /* error */
size += len;
/* copy incomplete last byte to start of obuf, where we continue */
- if (bytestate & 3 != 0)
+ if ((bytestate & 3) != 0)
*obuf = *opos;
opos = obuf;
}
Index: receive.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/receive.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- receive.c 16 Oct 2009 12:33:09 -0000 1.50
+++ receive.c 11 Nov 2009 10:08:02 -0000 1.51
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/receive.c,v 1.50 2009/10/16 12:33:09 nm4 Exp $ */
+/* $Cambridge: exim/exim-src/src/receive.c,v 1.51 2009/11/11 10:08:02 nm4 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -1067,7 +1067,7 @@
header_line *my_headerlist;
uschar *user_msg, *log_msg;
int mime_part_count_buffer = -1;
-int rc;
+int rc = OK;
memset(CS rfc822_file_path,0,2048);
@@ -1285,7 +1285,8 @@
BOOL
receive_msg(BOOL extract_recip)
{
-int i, rc;
+int i;
+int rc = FAIL;
int msg_size = 0;
int process_info_len = Ustrlen(process_info);
int error_rc = (error_handling == ERRORS_SENDER)?
Index: spf.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/spf.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- spf.c 12 Feb 2008 12:52:51 -0000 1.8
+++ spf.c 11 Nov 2009 10:08:02 -0000 1.9
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/spf.c,v 1.8 2008/02/12 12:52:51 nm4 Exp $ */
+/* $Cambridge: exim/exim-src/src/spf.c,v 1.9 2009/11/11 10:08:02 nm4 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -43,7 +43,7 @@
return 0;
}
- if (SPF_server_set_rec_dom(spf_server, primary_hostname)) {
+ if (SPF_server_set_rec_dom(spf_server, CS primary_hostname)) {
debug_printf("spf: SPF_server_set_rec_dom() failed.\n");
spf_server = NULL;
return 0;
@@ -51,14 +51,14 @@
spf_request = SPF_request_new(spf_server);
- if (SPF_request_set_ipv4_str(spf_request, spf_remote_addr)) {
+ if (SPF_request_set_ipv4_str(spf_request, CS spf_remote_addr)) {
debug_printf("spf: SPF_request_set_ipv4_str() failed.\n");
spf_server = NULL;
spf_request = NULL;
return 0;
}
- if (SPF_request_set_helo_dom(spf_request, spf_helo_domain)) {
+ if (SPF_request_set_helo_dom(spf_request, CS spf_helo_domain)) {
debug_printf("spf: SPF_set_helo_dom() failed.\n");
spf_server = NULL;
spf_request = NULL;
@@ -86,7 +86,7 @@
goto SPF_EVALUATE;
};
- if (SPF_request_set_env_from(spf_request, spf_envelope_sender)) {
+ if (SPF_request_set_env_from(spf_request, CS spf_envelope_sender)) {
/* Invalid sender address. This should be a real rare occurence */
rc = SPF_RESULT_PERMERROR;
goto SPF_EVALUATE;
@@ -94,7 +94,7 @@
/* get SPF result */
if (action == SPF_PROCESS_FALLBACK)
- SPF_request_query_fallback(spf_request, &spf_response, spf_guess);
+ SPF_request_query_fallback(spf_request, &spf_response, CS spf_guess);
else
SPF_request_query_mailfrom(spf_request, &spf_response);