Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package emacs24

This upload is intended to fix the openssl s_client issue, and to
address intermittent build failures that may be related to the
-no-pie/-nopie issue already addressed in emacs25.

diff -Nru emacs24-24.5+1/debian/.git-dpm emacs24-24.5+1/debian/.git-dpm
--- emacs24-24.5+1/debian/.git-dpm	2017-04-10 18:30:21.000000000 -0500
+++ emacs24-24.5+1/debian/.git-dpm	2017-04-22 12:32:14.000000000 -0500
@@ -1,6 +1,6 @@
 # see git-dpm(1) from git-dpm package
-d715dfdb5101dfbd1a83b2958ced6f3bd757ab92
-d715dfdb5101dfbd1a83b2958ced6f3bd757ab92
+088b2e039897fcf9e2eea00f580a2c5d87eba781
+088b2e039897fcf9e2eea00f580a2c5d87eba781
 62bc68f777c532a970566625e315d68bf0ab4eee
 62bc68f777c532a970566625e315d68bf0ab4eee
 emacs24_24.5+1.orig.tar.bz2
diff -Nru emacs24-24.5+1/debian/changelog emacs24-24.5+1/debian/changelog
--- emacs24-24.5+1/debian/changelog	2017-04-16 10:07:37.000000000 -0500
+++ emacs24-24.5+1/debian/changelog	2017-04-22 12:33:05.000000000 -0500
@@ -1,3 +1,22 @@
+emacs24 (24.5+1-10) unstable; urgency=medium
+
+  * Don't segfault if gcc expects -nopie instead of -no-pie.
+    Add 0027-Emacs-shouldn-t-segfault-when-gcc-expects-nopie.patch, a
+    backport from emacs25 (that closed #841551) to fix the problem.
+    Thanks to Lucas Nussbaum and Aaron M. Ucko for reporting the
+    problem, and Sven Joachim for tracking down the upstream patch.
+
+  * Don't offer/use openssl s_client by default: "s_client is a debug
+    tool, it does not set up a secure connection, it ignores all
+    errors and just continues.  It also doesn't do checks it should be
+    doing.  This is all documented behaviour." -- Kurt Roeckx
+    Add these patches to fix the problem:
+      0028-IMAP-connections-no-longer-use-openssl-s_client.patch
+      0029-openssl-s_client-is-no-longer-a-default-for-ssl-conn.patch
+    Thanks to Kurt Roeckx for reporting the issue. (Closes: #766397)
+
+ -- Rob Browning <r...@defaultvalue.org>  Sat, 22 Apr 2017 12:33:05 -0500
+
 emacs24 (24.5+1-9) unstable; urgency=medium
 
   * Improve gnutls security.  Remove --insecure and specify a trustfile.
diff -Nru emacs24-24.5+1/debian/patches/0027-Emacs-shouldn-t-segfault-when-gcc-expects-nopie.patch emacs24-24.5+1/debian/patches/0027-Emacs-shouldn-t-segfault-when-gcc-expects-nopie.patch
--- emacs24-24.5+1/debian/patches/0027-Emacs-shouldn-t-segfault-when-gcc-expects-nopie.patch	1969-12-31 18:00:00.000000000 -0600
+++ emacs24-24.5+1/debian/patches/0027-Emacs-shouldn-t-segfault-when-gcc-expects-nopie.patch	2017-04-22 12:32:11.000000000 -0500
@@ -0,0 +1,56 @@
+From c91f2fca460e04c1d47ec1b5db1ca3b8130b95f8 Mon Sep 17 00:00:00 2001
+From: Paul Eggert <egg...@cs.ucla.edu>
+Date: Sun, 16 Oct 2016 16:25:47 -0700
+Subject: Emacs shouldn't segfault when gcc expects -nopie
+
+This upstream patch has been added:
+
+  Port to Ubuntu 16.10, which needs gcc -nopie
+
+  * configure.ac (emacs_cv_prog_cc_no_pie): Rename from
+  emacs_cv_prog_cc_nopie.  All usages changed.  Check for -no-pie in
+  preference to -nopie (Bug#24682).  Backport from master.
+
+Origin: upstream, commit: 99892eeec8990884ef38601f14038ec6dc227741
+Bug: https://debbugs.gnu.org/24682
+Bug-Debian: https://bugs.debian.org/841551
+---
+ configure.ac | 25 +++++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 18387d84ec5..222b195a828 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -4918,6 +4918,31 @@ case "$opsys" in
+   *) LD_SWITCH_SYSTEM_TEMACS= ;;
+ esac
+ 
++# -no-pie or -nopie fixes a temacs segfault on Gentoo, OpenBSD,
++# Ubuntu, and other systems with "hardened" GCC configurations for
++# some reason (Bug#18784).  We don't know why this works, but not
++# segfaulting is better than segfaulting.  Use ac_c_werror_flag=yes
++# when trying the option, otherwise clang keeps warning that it does
++# not understand it, and pre-4.6 GCC has a similar problem
++# (Bug#20338).  Prefer -no-pie to -nopie, as -no-pie is the
++# spelling used by GCC 6.1.0 and later (Bug#24682).
++AC_CACHE_CHECK(
++  [for $CC option to disable position independent executables],
++  [emacs_cv_prog_cc_no_pie],
++  [emacs_save_c_werror_flag=$ac_c_werror_flag
++   emacs_save_LDFLAGS=$LDFLAGS
++   ac_c_werror_flag=yes
++   for emacs_cv_prog_cc_no_pie in -no-pie -nopie no; do
++     test $emacs_cv_prog_cc_no_pie = no && break
++     LDFLAGS="$emacs_save_LDFLAGS $emacs_cv_prog_cc_no_pie"
++     AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [break])
++   done
++   ac_c_werror_flag=$emacs_save_c_werror_flag
++   LDFLAGS=$emacs_save_LDFLAGS])
++if test "$emacs_cv_prog_cc_no_pie" != no; then
++  LD_SWITCH_SYSTEM_TEMACS="$LD_SWITCH_SYSTEM_TEMACS $emacs_cv_prog_cc_no_pie"
++fi
++
+ if test x$ac_enable_profiling != x ; then
+   case $opsys in
+     *freebsd | gnu-linux) ;;
diff -Nru emacs24-24.5+1/debian/patches/0028-IMAP-connections-no-longer-use-openssl-s_client.patch emacs24-24.5+1/debian/patches/0028-IMAP-connections-no-longer-use-openssl-s_client.patch
--- emacs24-24.5+1/debian/patches/0028-IMAP-connections-no-longer-use-openssl-s_client.patch	1969-12-31 18:00:00.000000000 -0600
+++ emacs24-24.5+1/debian/patches/0028-IMAP-connections-no-longer-use-openssl-s_client.patch	2017-04-22 12:32:14.000000000 -0500
@@ -0,0 +1,136 @@
+From 3a79c1cf4e45ac6e160e31d7fe4b18d9b500583e Mon Sep 17 00:00:00 2001
+From: Lars Ingebrigtsen <la...@gnus.org>
+Date: Sat, 26 Dec 2015 21:45:51 +0100
+Subject: IMAP connections no longer use openssl s_client
+
+`imap-ssl-program' has been removed, and imap.el uses the internal
+GnuTLS encryption functions if possible.
+
+Accomplished by incorporating this upstream patch:
+
+  Use built-in encryption in imap.el
+
+  * lisp/net/imap.el (imap-ssl-program): Remove (bug#21134).
+  (imap-starttls-open): Use open-network-stream instead of starttls.el.
+  (imap-tls-open): Use open-network-stream instead of tls.el.
+
+Origin: backport, commit:a2158f6c9af62f11533b2086596b755781d2e34f
+Bug: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=21134
+Bug-Debian: https://bugs.debian.org/766397
+Forwarded: not-needed
+---
+ lisp/net/imap.el | 63 ++++++++++++++++----------------------------------------
+ 1 file changed, 18 insertions(+), 45 deletions(-)
+
+diff --git a/lisp/net/imap.el b/lisp/net/imap.el
+index 3e5982398fd..b9a66871926 100644
+--- a/lisp/net/imap.el
++++ b/lisp/net/imap.el
+@@ -74,8 +74,7 @@
+ ;; imap.el supports RFC1730/2060/RFC3501 (IMAP4/IMAP4rev1).  The implemented
+ ;; IMAP extensions are RFC2195 (CRAM-MD5), RFC2086 (ACL), RFC2342
+ ;; (NAMESPACE), RFC2359 (UIDPLUS), the IMAP-part of RFC2595 (STARTTLS,
+-;; LOGINDISABLED) (with use of external library starttls.el and
+-;; program starttls), and the GSSAPI / Kerberos V4 sections of RFC1731
++;; LOGINDISABLED), and the GSSAPI / Kerberos V4 sections of RFC1731
+ ;; (with use of external program `imtest'), and RFC2971 (ID).  It also
+ ;; takes advantage of the UNSELECT extension in Cyrus IMAPD.
+ ;;
+@@ -140,8 +139,6 @@
+ (eval-and-compile
+   ;; For Emacs <22.2 and XEmacs.
+   (unless (fboundp 'declare-function) (defmacro declare-function (&rest _r)))
+-  (autoload 'starttls-open-stream "starttls")
+-  (autoload 'starttls-negotiate "starttls")
+   (autoload 'sasl-find-mechanism "sasl")
+   (autoload 'digest-md5-parse-digest-challenge "digest-md5")
+   (autoload 'digest-md5-digest-response "digest-md5")
+@@ -151,8 +148,7 @@
+   (autoload 'utf7-encode "utf7")
+   (autoload 'utf7-decode "utf7")
+   (autoload 'format-spec "format-spec")
+-  (autoload 'format-spec-make "format-spec")
+-  (autoload 'open-tls-stream "tls"))
++  (autoload 'format-spec-make "format-spec"))
+ 
+ ;; User variables.
+ 
+@@ -184,19 +180,6 @@ the list is tried until a successful connection is made."
+   :group 'imap
+   :type '(repeat string))
+ 
+-(defcustom imap-ssl-program '("openssl s_client -quiet -ssl3 -connect %s:%p"
+-			      "openssl s_client -quiet -ssl2 -connect %s:%p"
+-			      "s_client -quiet -ssl3 -connect %s:%p"
+-			      "s_client -quiet -ssl2 -connect %s:%p")
+-  "A string, or list of strings, containing commands for SSL connections.
+-Within a string, %s is replaced with the server address and %p with
+-port number on server.  The program should accept IMAP commands on
+-stdin and return responses to stdout.  Each entry in the list is tried
+-until a successful connection is made."
+-  :group 'imap
+-  :type '(choice string
+-		 (repeat string)))
+-
+ (defcustom imap-shell-program '("ssh %s imapd"
+ 				"rsh %s imapd"
+ 				"ssh %g ssh %s imapd"
+@@ -718,7 +701,8 @@ sure of changing the value of `foo'."
+   (let* ((port (or port imap-default-tls-port))
+ 	 (coding-system-for-read imap-coding-system-for-read)
+ 	 (coding-system-for-write imap-coding-system-for-write)
+-	 (process (open-tls-stream name buffer server port)))
++	 (process (open-network-stream name buffer server port
++                                       :type 'tls)))
+     (when process
+       (while (and (memq (process-status process) '(open run))
+ 		  ;; FIXME: Per the "blue moon" comment, the process/buffer
+@@ -803,34 +787,23 @@ sure of changing the value of `foo'."
+   (imap-capability 'STARTTLS buffer))
+ 
+ (defun imap-starttls-open (name buffer server port)
++  (message "imap: Connecting with STARTTLS...")
+   (let* ((port (or port imap-default-port))
+ 	 (coding-system-for-read imap-coding-system-for-read)
+ 	 (coding-system-for-write imap-coding-system-for-write)
+-	 (process (starttls-open-stream name buffer server port))
+-	 done tls-info)
+-    (message "imap: Connecting with STARTTLS...")
+-    (when process
+-      (while (and (memq (process-status process) '(open run))
+-		  (set-buffer buffer) ;; XXX "blue moon" nntp.el bug
+-		  (goto-char (point-max))
+-		  (forward-line -1)
+-		  (not (imap-parse-greeting)))
+-	(accept-process-output process 1)
+-	(sit-for 1))
+-      (imap-send-command "STARTTLS")
+-      (while (and (memq (process-status process) '(open run))
+-		  (set-buffer buffer) ;; XXX "blue moon" nntp.el bug
+-		  (goto-char (point-max))
+-		  (forward-line -1)
+-		  (not (re-search-forward "[0-9]+ OK.*\r?\n" nil t)))
+-	(accept-process-output process 1)
+-	(sit-for 1))
+-      (imap-log buffer)
+-      (when (and (setq tls-info (starttls-negotiate process))
+-		 (memq (process-status process) '(open run)))
+-	(setq done process)))
+-    (if (stringp tls-info)
+-	(message "imap: STARTTLS info: %s" tls-info))
++	 (process (open-network-stream
++                   name buffer server port
++                   :type 'starttls
++                   :capability-command "1 CAPABILITY\r\n"
++                   :always-query-capabilities t
++                   :end-of-command "\r\n"
++                   :success " OK "
++                   :starttls-function
++                   (lambda (capabilities)
++                     (when (string-match-p "STARTTLS" capabilities)
++                       "1 STARTTLS\r\n"))))
++         (done (and process
++                    (memq (process-status process) '(open run)))))
+     (message "imap: Connecting with STARTTLS...%s" (if done "done" "failed"))
+     done))
+ 
diff -Nru emacs24-24.5+1/debian/patches/0029-openssl-s_client-is-no-longer-a-default-for-ssl-conn.patch emacs24-24.5+1/debian/patches/0029-openssl-s_client-is-no-longer-a-default-for-ssl-conn.patch
--- emacs24-24.5+1/debian/patches/0029-openssl-s_client-is-no-longer-a-default-for-ssl-conn.patch	1969-12-31 18:00:00.000000000 -0600
+++ emacs24-24.5+1/debian/patches/0029-openssl-s_client-is-no-longer-a-default-for-ssl-conn.patch	2017-04-22 12:32:14.000000000 -0500
@@ -0,0 +1,62 @@
+From 088b2e039897fcf9e2eea00f580a2c5d87eba781 Mon Sep 17 00:00:00 2001
+From: Rob Browning <r...@defaultvalue.org>
+Date: Sat, 22 Apr 2017 12:02:00 -0500
+Subject: openssl s_client is no longer a default for ssl connections
+
+"s_client is a debug tool, it does not set up a secure connection, it
+ignores all errors and just continues.  It also doesn't do checks it
+should be doing.  This is all documented behaviour." -- Kurt Roeckx
+
+Bug-Debian: https://bugs.debian.org/766397
+---
+ lisp/net/tls.el | 15 +++++----------
+ 1 file changed, 5 insertions(+), 10 deletions(-)
+
+diff --git a/lisp/net/tls.el b/lisp/net/tls.el
+index 68a3ff6ae0a..287de40fa8d 100644
+--- a/lisp/net/tls.el
++++ b/lisp/net/tls.el
+@@ -78,8 +78,7 @@ and `gnutls-cli' (version 2.0.1) output."
+ 
+ (defcustom tls-program
+   '("gnutls-cli --x509cafile %t -p %p %h"
+-    "gnutls-cli --x509cafile %t -p %p %h --protocols ssl3"
+-    "openssl s_client -connect %h:%p -no_ssl2 -ign_eof")
++    "gnutls-cli --x509cafile %t -p %p %h --protocols ssl3")
+   "List of strings containing commands to start TLS stream to a host.
+ Each entry in the list is tried until a connection is successful.
+ %h is replaced with server hostname, %p with port to connect to.
+@@ -93,20 +92,17 @@ successful negotiation."
+   '(choice
+     (const :tag "Default list of commands"
+ 	   ("gnutls-cli --x509cafile %t -p %p %h"
+-	    "gnutls-cli --x509cafile %t -p %p %h --protocols ssl3"
+-	    "openssl s_client -CAfile %t -connect %h:%p -no_ssl2 -ign_eof"))
++	    "gnutls-cli --x509cafile %t -p %p %h --protocols ssl3"))
+     (list :tag "Choose commands"
+ 	  :value
+ 	  ("gnutls-cli --x509cafile %t -p %p %h"
+-	   "gnutls-cli --x509cafile %t -p %p %h --protocols ssl3"
+-	   "openssl s_client -connect %h:%p -no_ssl2 -ign_eof")
++	   "gnutls-cli --x509cafile %t -p %p %h --protocols ssl3")
+ 	  (set :inline t
+ 	       ;; FIXME: add brief `:tag "..."' descriptions.
+ 	       ;; (repeat :inline t :tag "Other" (string))
+ 	       ;; No trust check:
+ 	       (const "gnutls-cli --insecure -p %p %h")
+-	       (const "gnutls-cli --insecure -p %p %h --protocols ssl3")
+-	       (const "openssl s_client -connect %h:%p -no_ssl2 -ign_eof"))
++	       (const "gnutls-cli --insecure -p %p %h --protocols ssl3"))
+ 	  (repeat :inline t :tag "Other" (string)))
+     (list :tag "List of commands"
+ 	  (repeat :tag "Command" (string))))
+@@ -137,8 +133,7 @@ consider trustworthy, e.g.:
+ 
+ \(setq tls-program
+       '(\"gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p %p %h\"
+-	\"gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p %p %h --protocols ssl3\"
+-	\"openssl s_client -connect %h:%p -CAfile /etc/ssl/certs/ca-certificates.crt -no_ssl2 -ign_eof\"))"
++	\"gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p %p %h --protocols ssl3\"))"
+   :type '(choice (const :tag "Always" t)
+ 		 (const :tag "Never" nil)
+ 		 (const :tag "Ask" ask))
diff -Nru emacs24-24.5+1/debian/patches/series emacs24-24.5+1/debian/patches/series
--- emacs24-24.5+1/debian/patches/series	2017-04-10 18:30:21.000000000 -0500
+++ emacs24-24.5+1/debian/patches/series	2017-04-22 12:32:14.000000000 -0500
@@ -24,3 +24,6 @@
 0024-Remove-insecure-from-gnutls-cli-invocation.patch
 0025-Refactor-out-gnutls-trustfiles.patch
 0026-Make-tls.el-use-trustfiles-by-default.patch
+0027-Emacs-shouldn-t-segfault-when-gcc-expects-nopie.patch
+0028-IMAP-connections-no-longer-use-openssl-s_client.patch
+0029-openssl-s_client-is-no-longer-a-default-for-ssl-conn.patch
unblock emacs24/24.5+1-10

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4

Reply via email to