From 15c84adca94bfe4a89ece5c04f06a884cf508ebb Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Mon, 17 Jan 2011 21:55:49 +0100 Subject: fix packages to be compile with stack protector - libtool do not pass -fstack-protector while linking, but this is required to successfully link libraries or executables with SSP - pass LDFLAGS for non-libtool packages --- .../ssmtp/patches/500-debian-subset-2.61-2.patch | 248 --------------------- .../ssmtp/patches/901-strftime_space_padding.patch | 12 - package/ssmtp/patches/patch-Makefile_in | 11 + package/ssmtp/patches/patch-arpadate_c | 11 + package/ssmtp/patches/patch-configure_in | 13 ++ package/ssmtp/patches/patch-ssmtp_c | 224 +++++++++++++++++++ package/ssmtp/patches/patch-ssmtp_conf | 11 + 7 files changed, 270 insertions(+), 260 deletions(-) delete mode 100644 package/ssmtp/patches/500-debian-subset-2.61-2.patch delete mode 100644 package/ssmtp/patches/901-strftime_space_padding.patch create mode 100644 package/ssmtp/patches/patch-Makefile_in create mode 100644 package/ssmtp/patches/patch-arpadate_c create mode 100644 package/ssmtp/patches/patch-configure_in create mode 100644 package/ssmtp/patches/patch-ssmtp_c create mode 100644 package/ssmtp/patches/patch-ssmtp_conf (limited to 'package/ssmtp') diff --git a/package/ssmtp/patches/500-debian-subset-2.61-2.patch b/package/ssmtp/patches/500-debian-subset-2.61-2.patch deleted file mode 100644 index f682c97a1..000000000 --- a/package/ssmtp/patches/500-debian-subset-2.61-2.patch +++ /dev/null @@ -1,248 +0,0 @@ ---- ssmtp-2.61.orig/ssmtp.conf -+++ ssmtp-2.61/ssmtp.conf -@@ -36,3 +36,8 @@ - - # Use this RSA certificate. - #TLSCert=/etc/ssl/certs/ssmtp.pem -+ -+# Get enhanced (*really* enhanced) debugging information in the logs -+# If you want to have debugging of the config file parsing, move this option -+# to the top of the config file and uncomment -+#Debug=YES ---- ssmtp-2.61.orig/ssmtp.c -+++ ssmtp-2.61/ssmtp.c -@@ -93,6 +93,7 @@ - static char hextab[]="0123456789abcdef"; - #endif - -+ssize_t outbytes; - - /* - log_event() -- Write event to syslog (or log file if defined) -@@ -129,7 +130,7 @@ - #endif - } - --void smtp_write(int fd, char *format, ...); -+ssize_t smtp_write(int fd, char *format, ...); - int smtp_read(int fd, char *response); - int smtp_read_all(int fd, char *response); - int smtp_okay(int fd, char *response); -@@ -150,7 +151,7 @@ - if(isatty(fileno(stdin))) { - if(log_level > 0) { - log_event(LOG_ERR, -- "stdin is a TTY - not saving to %s/dead.letter, pw->pw_dir"); -+ "stdin is a TTY - not saving to %s/dead.letter", pw->pw_dir); - } - return; - } -@@ -964,6 +965,17 @@ - log_event(LOG_INFO, "Set AuthMethod=\"%s\"\n", auth_method); - } - } -+ else if (strcasecmp(p, "Debug") == 0) -+ { -+ if (strcasecmp(q, "YES") == 0) -+ { -+ log_level = 1; -+ } -+ else -+ { -+ log_level = 0; -+ } -+ } - else { - log_event(LOG_INFO, "Unable to set %s=\"%s\"\n", p, q); - } -@@ -1232,10 +1244,11 @@ - /* - smtp_write() -- A printf to an fd and append - */ --void smtp_write(int fd, char *format, ...) -+ssize_t smtp_write(int fd, char *format, ...) - { - char buf[(BUF_SZ + 1)]; - va_list ap; -+ ssize_t outbytes = 0; - - va_start(ap, format); - if(vsnprintf(buf, (BUF_SZ - 2), format, ap) == -1) { -@@ -1252,7 +1265,9 @@ - } - (void)strcat(buf, "\r\n"); - -- (void)fd_puts(fd, buf, strlen(buf)); -+ outbytes = fd_puts(fd, buf, strlen(buf)); -+ -+ return (outbytes >= 0) ? outbytes : 0; - } - - /* -@@ -1282,6 +1297,8 @@ - int i, sock; - uid_t uid; - -+ outbytes = 0; -+ - uid = getuid(); - if((pw = getpwuid(uid)) == (struct passwd *)NULL) { - die("Could not find password entry for UID %d", uid); -@@ -1335,10 +1352,10 @@ - - /* If user supplied username and password, then try ELHO */ - if(auth_user) { -- smtp_write(sock, "EHLO %s", hostname); -+ outbytes += smtp_write(sock, "EHLO %s", hostname); - } - else { -- smtp_write(sock, "HELO %s", hostname); -+ outbytes += smtp_write(sock, "HELO %s", hostname); - } - (void)alarm((unsigned) MEDWAIT); - -@@ -1354,7 +1371,7 @@ - } - - if(strcasecmp(auth_method, "cram-md5") == 0) { -- smtp_write(sock, "AUTH CRAM-MD5"); -+ outbytes += smtp_write(sock, "AUTH CRAM-MD5"); - (void)alarm((unsigned) MEDWAIT); - - if(smtp_read(sock, buf) != 3) { -@@ -1369,7 +1386,7 @@ - #endif - memset(buf, 0, sizeof(buf)); - to64frombits(buf, auth_user, strlen(auth_user)); -- smtp_write(sock, "AUTH LOGIN %s", buf); -+ outbytes += smtp_write(sock, "AUTH LOGIN %s", buf); - - (void)alarm((unsigned) MEDWAIT); - if(smtp_read(sock, buf) != 3) { -@@ -1381,7 +1398,7 @@ - #ifdef MD5AUTH - } - #endif -- smtp_write(sock, "%s", buf); -+ outbytes += smtp_write(sock, "%s", buf); - (void)alarm((unsigned) MEDWAIT); - - if(smtp_okay(sock, buf) == False) { -@@ -1390,7 +1407,7 @@ - } - - /* Send "MAIL FROM:" line */ -- smtp_write(sock, "MAIL FROM:<%s>", uad); -+ outbytes += smtp_write(sock, "MAIL FROM:<%s>", uad); - - (void)alarm((unsigned) MEDWAIT); - -@@ -1408,7 +1425,7 @@ - - while(rt->next) { - p = rcpt_remap(rt->string); -- smtp_write(sock, "RCPT TO:<%s>", p); -+ outbytes += smtp_write(sock, "RCPT TO:<%s>", p); - - (void)alarm((unsigned)MEDWAIT); - -@@ -1425,7 +1442,7 @@ - while(p) { - /* RFC822 Address -> "foo@bar" */ - q = rcpt_remap(addr_parse(p)); -- smtp_write(sock, "RCPT TO:<%s>", q); -+ outbytes += smtp_write(sock, "RCPT TO:<%s>", q); - - (void)alarm((unsigned) MEDWAIT); - -@@ -1439,7 +1456,7 @@ - } - - /* Send DATA */ -- smtp_write(sock, "DATA"); -+ outbytes += smtp_write(sock, "DATA"); - (void)alarm((unsigned) MEDWAIT); - - if(smtp_read(sock, buf) != 3) { -@@ -1447,45 +1464,45 @@ - die("%s", buf); - } - -- smtp_write(sock, -+ outbytes += smtp_write(sock, - "Received: by %s (sSMTP sendmail emulation); %s", hostname, arpadate); - - if(have_from == False) { -- smtp_write(sock, "From: %s", from); -+ outbytes += smtp_write(sock, "From: %s", from); - } - - if(have_date == False) { -- smtp_write(sock, "Date: %s", arpadate); -+ outbytes += smtp_write(sock, "Date: %s", arpadate); - } - - #ifdef HASTO_OPTION - if(have_to == False) { -- smtp_write(sock, "To: postmaster"); -+ outbytes += smtp_write(sock, "To: postmaster"); - } - #endif - - ht = &headers; - while(ht->next) { -- smtp_write(sock, "%s", ht->string); -+ outbytes += smtp_write(sock, "%s", ht->string); - ht = ht->next; - } - - (void)alarm((unsigned) MEDWAIT); - - /* End of headers, start body */ -- smtp_write(sock, ""); -+ outbytes += smtp_write(sock, ""); - - while(fgets(buf, sizeof(buf), stdin)) { - /* Trim off \n, double leading .'s */ - standardise(buf); - -- smtp_write(sock, "%s", buf); -+ outbytes += smtp_write(sock, "%s", buf); - - (void)alarm((unsigned) MEDWAIT); - } - /* End of body */ - -- smtp_write(sock, "."); -+ outbytes += smtp_write(sock, "."); - (void)alarm((unsigned) MAXWAIT); - - if(smtp_okay(sock, buf) == 0) { -@@ -1495,11 +1512,12 @@ - /* Close conection */ - (void)signal(SIGALRM, SIG_IGN); - -- smtp_write(sock, "QUIT"); -+ outbytes += smtp_write(sock, "QUIT"); - (void)smtp_okay(sock, buf); - (void)close(sock); - -- log_event(LOG_INFO, "Sent mail for %s (%s)", from_strip(uad), buf); -+ log_event(LOG_INFO, "Sent mail for %s (%s) uid=%d username=%s outbytes=%d", -+ from_strip(uad), buf, uid, pw->pw_name, outbytes); - - return(0); - } ---- ssmtp-2.61.orig/configure.in -+++ ssmtp-2.61/configure.in -@@ -24,8 +24,8 @@ - AC_STRUCT_TM - - dnl Checks for libraries. --AC_CHECK_LIB(nsl, gethostname) --AC_CHECK_LIB(socket, socket) -+AC_SEARCH_LIBS(gethostname, nsl) -+AC_SEARCH_LIBS(socket, socket) - - dnl Checks for library functions. - AC_TYPE_SIGNAL diff --git a/package/ssmtp/patches/901-strftime_space_padding.patch b/package/ssmtp/patches/901-strftime_space_padding.patch deleted file mode 100644 index dd0b9b116..000000000 --- a/package/ssmtp/patches/901-strftime_space_padding.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ruN ssmtp-2.60-old/arpadate.c ssmtp-2.60-new/arpadate.c ---- ssmtp-2.60-old/arpadate.c 2002-12-08 18:30:11.000000000 +0100 -+++ ssmtp-2.60-new/arpadate.c 2004-05-23 18:54:32.000000000 +0200 -@@ -79,7 +79,7 @@ - time_t now; - - /* RFC822 format string borrowed from GNU shellutils date.c */ -- const char *format = "%a, %_d %b %Y %H:%M:%S %z"; -+ const char *format = "%a, %d %b %Y %H:%M:%S %z"; - - now = time(NULL); - diff --git a/package/ssmtp/patches/patch-Makefile_in b/package/ssmtp/patches/patch-Makefile_in new file mode 100644 index 000000000..01150acf4 --- /dev/null +++ b/package/ssmtp/patches/patch-Makefile_in @@ -0,0 +1,11 @@ +--- ssmtp-2.61.orig/Makefile.in 2004-07-26 07:32:18.000000000 +0200 ++++ ssmtp-2.61/Makefile.in 2011-01-17 15:06:49.000000000 +0100 +@@ -79,7 +79,7 @@ uninstall-sendmail: uninstall + + # Binaries: + ssmtp: $(OBJS) +- $(CC) -o ssmtp $(OBJS) @LIBS@ ++ $(CC) @LDFLAGS@ -o ssmtp $(OBJS) @LIBS@ + + .PHONY: clean + clean: diff --git a/package/ssmtp/patches/patch-arpadate_c b/package/ssmtp/patches/patch-arpadate_c new file mode 100644 index 000000000..e753470f6 --- /dev/null +++ b/package/ssmtp/patches/patch-arpadate_c @@ -0,0 +1,11 @@ +--- ssmtp-2.61.orig/arpadate.c 2002-12-08 18:30:11.000000000 +0100 ++++ ssmtp-2.61/arpadate.c 2011-01-17 15:09:18.000000000 +0100 +@@ -79,7 +79,7 @@ get_arpadate (char *d_string) + time_t now; + + /* RFC822 format string borrowed from GNU shellutils date.c */ +- const char *format = "%a, %_d %b %Y %H:%M:%S %z"; ++ const char *format = "%a, %d %b %Y %H:%M:%S %z"; + + now = time(NULL); + diff --git a/package/ssmtp/patches/patch-configure_in b/package/ssmtp/patches/patch-configure_in new file mode 100644 index 000000000..274ae978e --- /dev/null +++ b/package/ssmtp/patches/patch-configure_in @@ -0,0 +1,13 @@ +--- ssmtp-2.61.orig/configure.in 2004-07-23 06:40:29.000000000 +0200 ++++ ssmtp-2.61/configure.in 2011-01-17 14:46:46.000000000 +0100 +@@ -24,8 +24,8 @@ AC_C_CONST + AC_STRUCT_TM + + dnl Checks for libraries. +-AC_CHECK_LIB(nsl, gethostname) +-AC_CHECK_LIB(socket, socket) ++AC_SEARCH_LIBS(gethostname, nsl) ++AC_SEARCH_LIBS(socket, socket) + + dnl Checks for library functions. + AC_TYPE_SIGNAL diff --git a/package/ssmtp/patches/patch-ssmtp_c b/package/ssmtp/patches/patch-ssmtp_c new file mode 100644 index 000000000..38d45ca3d --- /dev/null +++ b/package/ssmtp/patches/patch-ssmtp_c @@ -0,0 +1,224 @@ +--- ssmtp-2.61.orig/ssmtp.c 2004-07-23 07:58:48.000000000 +0200 ++++ ssmtp-2.61/ssmtp.c 2011-01-17 14:46:46.000000000 +0100 +@@ -93,6 +93,7 @@ SSL *ssl; + static char hextab[]="0123456789abcdef"; + #endif + ++ssize_t outbytes; + + /* + log_event() -- Write event to syslog (or log file if defined) +@@ -129,7 +130,7 @@ void log_event(int priority, char *forma + #endif + } + +-void smtp_write(int fd, char *format, ...); ++ssize_t smtp_write(int fd, char *format, ...); + int smtp_read(int fd, char *response); + int smtp_read_all(int fd, char *response); + int smtp_okay(int fd, char *response); +@@ -150,7 +151,7 @@ void dead_letter(void) + if(isatty(fileno(stdin))) { + if(log_level > 0) { + log_event(LOG_ERR, +- "stdin is a TTY - not saving to %s/dead.letter, pw->pw_dir"); ++ "stdin is a TTY - not saving to %s/dead.letter", pw->pw_dir); + } + return; + } +@@ -964,6 +965,17 @@ bool_t read_config() + log_event(LOG_INFO, "Set AuthMethod=\"%s\"\n", auth_method); + } + } ++ else if (strcasecmp(p, "Debug") == 0) ++ { ++ if (strcasecmp(q, "YES") == 0) ++ { ++ log_level = 1; ++ } ++ else ++ { ++ log_level = 0; ++ } ++ } + else { + log_event(LOG_INFO, "Unable to set %s=\"%s\"\n", p, q); + } +@@ -1232,10 +1244,11 @@ ssize_t fd_puts(int fd, const void *buf, + /* + smtp_write() -- A printf to an fd and append + */ +-void smtp_write(int fd, char *format, ...) ++ssize_t smtp_write(int fd, char *format, ...) + { + char buf[(BUF_SZ + 1)]; + va_list ap; ++ ssize_t outbytes = 0; + + va_start(ap, format); + if(vsnprintf(buf, (BUF_SZ - 2), format, ap) == -1) { +@@ -1252,7 +1265,9 @@ void smtp_write(int fd, char *format, .. + } + (void)strcat(buf, "\r\n"); + +- (void)fd_puts(fd, buf, strlen(buf)); ++ outbytes = fd_puts(fd, buf, strlen(buf)); ++ ++ return (outbytes >= 0) ? outbytes : 0; + } + + /* +@@ -1282,6 +1297,8 @@ int ssmtp(char *argv[]) + int i, sock; + uid_t uid; + ++ outbytes = 0; ++ + uid = getuid(); + if((pw = getpwuid(uid)) == (struct passwd *)NULL) { + die("Could not find password entry for UID %d", uid); +@@ -1335,10 +1352,10 @@ int ssmtp(char *argv[]) + + /* If user supplied username and password, then try ELHO */ + if(auth_user) { +- smtp_write(sock, "EHLO %s", hostname); ++ outbytes += smtp_write(sock, "EHLO %s", hostname); + } + else { +- smtp_write(sock, "HELO %s", hostname); ++ outbytes += smtp_write(sock, "HELO %s", hostname); + } + (void)alarm((unsigned) MEDWAIT); + +@@ -1354,7 +1371,7 @@ int ssmtp(char *argv[]) + } + + if(strcasecmp(auth_method, "cram-md5") == 0) { +- smtp_write(sock, "AUTH CRAM-MD5"); ++ outbytes += smtp_write(sock, "AUTH CRAM-MD5"); + (void)alarm((unsigned) MEDWAIT); + + if(smtp_read(sock, buf) != 3) { +@@ -1369,7 +1386,7 @@ int ssmtp(char *argv[]) + #endif + memset(buf, 0, sizeof(buf)); + to64frombits(buf, auth_user, strlen(auth_user)); +- smtp_write(sock, "AUTH LOGIN %s", buf); ++ outbytes += smtp_write(sock, "AUTH LOGIN %s", buf); + + (void)alarm((unsigned) MEDWAIT); + if(smtp_read(sock, buf) != 3) { +@@ -1381,7 +1398,7 @@ int ssmtp(char *argv[]) + #ifdef MD5AUTH + } + #endif +- smtp_write(sock, "%s", buf); ++ outbytes += smtp_write(sock, "%s", buf); + (void)alarm((unsigned) MEDWAIT); + + if(smtp_okay(sock, buf) == False) { +@@ -1390,7 +1407,7 @@ int ssmtp(char *argv[]) + } + + /* Send "MAIL FROM:" line */ +- smtp_write(sock, "MAIL FROM:<%s>", uad); ++ outbytes += smtp_write(sock, "MAIL FROM:<%s>", uad); + + (void)alarm((unsigned) MEDWAIT); + +@@ -1408,7 +1425,7 @@ int ssmtp(char *argv[]) + + while(rt->next) { + p = rcpt_remap(rt->string); +- smtp_write(sock, "RCPT TO:<%s>", p); ++ outbytes += smtp_write(sock, "RCPT TO:<%s>", p); + + (void)alarm((unsigned)MEDWAIT); + +@@ -1425,7 +1442,7 @@ int ssmtp(char *argv[]) + while(p) { + /* RFC822 Address -> "foo@bar" */ + q = rcpt_remap(addr_parse(p)); +- smtp_write(sock, "RCPT TO:<%s>", q); ++ outbytes += smtp_write(sock, "RCPT TO:<%s>", q); + + (void)alarm((unsigned) MEDWAIT); + +@@ -1439,7 +1456,7 @@ int ssmtp(char *argv[]) + } + + /* Send DATA */ +- smtp_write(sock, "DATA"); ++ outbytes += smtp_write(sock, "DATA"); + (void)alarm((unsigned) MEDWAIT); + + if(smtp_read(sock, buf) != 3) { +@@ -1447,45 +1464,45 @@ int ssmtp(char *argv[]) + die("%s", buf); + } + +- smtp_write(sock, ++ outbytes += smtp_write(sock, + "Received: by %s (sSMTP sendmail emulation); %s", hostname, arpadate); + + if(have_from == False) { +- smtp_write(sock, "From: %s", from); ++ outbytes += smtp_write(sock, "From: %s", from); + } + + if(have_date == False) { +- smtp_write(sock, "Date: %s", arpadate); ++ outbytes += smtp_write(sock, "Date: %s", arpadate); + } + + #ifdef HASTO_OPTION + if(have_to == False) { +- smtp_write(sock, "To: postmaster"); ++ outbytes += smtp_write(sock, "To: postmaster"); + } + #endif + + ht = &headers; + while(ht->next) { +- smtp_write(sock, "%s", ht->string); ++ outbytes += smtp_write(sock, "%s", ht->string); + ht = ht->next; + } + + (void)alarm((unsigned) MEDWAIT); + + /* End of headers, start body */ +- smtp_write(sock, ""); ++ outbytes += smtp_write(sock, ""); + + while(fgets(buf, sizeof(buf), stdin)) { + /* Trim off \n, double leading .'s */ + standardise(buf); + +- smtp_write(sock, "%s", buf); ++ outbytes += smtp_write(sock, "%s", buf); + + (void)alarm((unsigned) MEDWAIT); + } + /* End of body */ + +- smtp_write(sock, "."); ++ outbytes += smtp_write(sock, "."); + (void)alarm((unsigned) MAXWAIT); + + if(smtp_okay(sock, buf) == 0) { +@@ -1495,11 +1512,12 @@ int ssmtp(char *argv[]) + /* Close conection */ + (void)signal(SIGALRM, SIG_IGN); + +- smtp_write(sock, "QUIT"); ++ outbytes += smtp_write(sock, "QUIT"); + (void)smtp_okay(sock, buf); + (void)close(sock); + +- log_event(LOG_INFO, "Sent mail for %s (%s)", from_strip(uad), buf); ++ log_event(LOG_INFO, "Sent mail for %s (%s) uid=%d username=%s outbytes=%d", ++ from_strip(uad), buf, uid, pw->pw_name, outbytes); + + return(0); + } diff --git a/package/ssmtp/patches/patch-ssmtp_conf b/package/ssmtp/patches/patch-ssmtp_conf new file mode 100644 index 000000000..fb8ffae95 --- /dev/null +++ b/package/ssmtp/patches/patch-ssmtp_conf @@ -0,0 +1,11 @@ +--- ssmtp-2.61.orig/ssmtp.conf 2004-07-23 07:58:48.000000000 +0200 ++++ ssmtp-2.61/ssmtp.conf 2011-01-17 14:46:46.000000000 +0100 +@@ -36,3 +36,8 @@ hostname=_HOSTNAME_ + + # Use this RSA certificate. + #TLSCert=/etc/ssl/certs/ssmtp.pem ++ ++# Get enhanced (*really* enhanced) debugging information in the logs ++# If you want to have debugging of the config file parsing, move this option ++# to the top of the config file and uncomment ++#Debug=YES -- cgit v1.2.3