openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
February 2016
- 1 participants
- 1439 discussions
Hello community,
here is the log from the commit of package pulseaudio for openSUSE:Factory checked in at 2016-02-28 02:26:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pulseaudio (Old)
and /work/SRC/openSUSE:Factory/.pulseaudio.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pulseaudio"
Changes:
--------
--- /work/SRC/openSUSE:Factory/pulseaudio/pulseaudio.changes 2016-01-28 17:18:23.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.pulseaudio.new/pulseaudio.changes 2016-02-28 02:26:46.000000000 +0100
@@ -1,0 +2,6 @@
+Wed Feb 24 08:53:35 UTC 2016 - hguo(a)suse.com
+
+- Disable flat-volumes by default with config disable_flat_volumes.conf
+ Remedy for fate#310668.
+
+-------------------------------------------------------------------
New:
----
disable_flat_volumes.conf
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pulseaudio.spec ++++++
--- /var/tmp/diff_new_pack.eCBzUS/_old 2016-02-28 02:26:48.000000000 +0100
+++ /var/tmp/diff_new_pack.eCBzUS/_new 2016-02-28 02:26:48.000000000 +0100
@@ -39,6 +39,7 @@
Source3: sysconfig.sound-pulseaudio
Source4: pulseaudio-server.fw
Source5: pulseaudio.service
+Source6: disable_flat_volumes.conf
Source99: baselibs.conf
Patch0: disabled-start.diff
Patch1: suppress-socket-error-msg.diff
@@ -391,6 +392,8 @@
# create .d conf dirs (since 8.0)
mkdir -p %{buildroot}%{_sysconfdir}/pulse/client.conf.d
mkdir -p %{buildroot}%{_sysconfdir}/pulse/daemon.conf.d
+# Install disable_flat_volumes.conf
+install -m 0644 %{S:6} %{buildroot}%{_sysconfdir}/pulse/daemon.conf.d
%fdupes doxygen/html
%pre
@@ -534,6 +537,7 @@
%{_mandir}/man5/pulse-cli-syntax.5*
%dir %{_sysconfdir}/pulse/
%dir %{_sysconfdir}/pulse/daemon.conf.d
+%config(noreplace) %{_sysconfdir}/pulse/daemon.conf.d/disable_flat_volumes.conf
%config(noreplace) %{_sysconfdir}/pulse/daemon.conf
%config(noreplace) %{_sysconfdir}/pulse/default.pa
%config(noreplace) %{_sysconfdir}/pulse/system.pa
++++++ disable_flat_volumes.conf ++++++
# Set flat-volumes to no so that no applications can abruptedly increase master volume
# Remedy for fate#310668.
flat-volumes = no
1
0
Hello community,
here is the log from the commit of package python for openSUSE:Factory checked in at 2016-02-28 02:26:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python (Old)
and /work/SRC/openSUSE:Factory/.python.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python"
Changes:
--------
--- /work/SRC/openSUSE:Factory/python/python-base.changes 2015-09-19 06:52:48.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python.new/python-base.changes 2016-02-28 02:26:13.000000000 +0100
@@ -1,0 +2,6 @@
+Fri Jan 29 13:03:40 UTC 2016 - rguenther(a)suse.com
+
+- Add python-2.7.10-overflow_check.patch to fix broken overflow checks.
+ [bnc#964182]
+
+-------------------------------------------------------------------
python.changes: same change
New:
----
python-2.7.10-overflow_check.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-base.spec ++++++
--- /var/tmp/diff_new_pack.16JCKS/_old 2016-02-28 02:26:16.000000000 +0100
+++ /var/tmp/diff_new_pack.16JCKS/_new 2016-02-28 02:26:16.000000000 +0100
@@ -56,6 +56,7 @@
Patch34: python-2.7.9-sles-disable-verification-by-default.patch
# PATCH-FIX-UPSTREAM python-ncurses-6.0-accessors.patch dimstar(a)opensuse.org -- Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1
Patch35: python-ncurses-6.0-accessors.patch
+Patch36: python-2.7.10-overflow_check.patch
# COMMON-PATCH-END
%define python_version %(echo %{tarversion} | head -c 3)
BuildRequires: automake
@@ -149,6 +150,7 @@
%patch34 -p1
%endif
%patch35 -p1
+%patch36
# drop Autoconf version requirement
sed -i 's/^version_required/dnl version_required/' configure.ac
++++++ python-doc.spec ++++++
--- /var/tmp/diff_new_pack.16JCKS/_old 2016-02-28 02:26:16.000000000 +0100
+++ /var/tmp/diff_new_pack.16JCKS/_new 2016-02-28 02:26:16.000000000 +0100
@@ -15,7 +15,6 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-
Name: python-doc
Version: 2.7.10
Release: 0
@@ -57,6 +56,7 @@
Patch34: python-2.7.9-sles-disable-verification-by-default.patch
# PATCH-FIX-UPSTREAM python-ncurses-6.0-accessors.patch dimstar(a)opensuse.org -- Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1
Patch35: python-ncurses-6.0-accessors.patch
+Patch36: python-2.7.10-overflow_check.patch
# COMMON-PATCH-END
Provides: pyth_doc
Provides: pyth_ps
@@ -104,6 +104,7 @@
%patch34 -p1
%endif
%patch35 -p1
+%patch36
# drop Autoconf version requirement
sed -i 's/^version_required/dnl version_required/' configure.ac
++++++ python.spec ++++++
--- /var/tmp/diff_new_pack.16JCKS/_old 2016-02-28 02:26:16.000000000 +0100
+++ /var/tmp/diff_new_pack.16JCKS/_new 2016-02-28 02:26:16.000000000 +0100
@@ -15,7 +15,6 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
-
Name: python
Version: 2.7.10
Release: 0
@@ -62,6 +61,7 @@
Patch34: python-2.7.9-sles-disable-verification-by-default.patch
# PATCH-FIX-UPSTREAM python-ncurses-6.0-accessors.patch dimstar(a)opensuse.org -- Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1
Patch35: python-ncurses-6.0-accessors.patch
+Patch36: python-2.7.10-overflow_check.patch
# COMMON-PATCH-END
BuildRequires: automake
BuildRequires: db-devel
@@ -205,6 +205,7 @@
%patch34 -p1
%endif
%patch35 -p1
+%patch36
# drop Autoconf version requirement
sed -i 's/^version_required/dnl version_required/' configure.ac
++++++ python-2.7.10-overflow_check.patch ++++++
--- ./Objects/bytearrayobject.c.orig 2016-01-29 13:58:55.414941897 +0100
+++ ./Objects/bytearrayobject.c 2016-01-29 14:00:18.383902058 +0100
@@ -1903,12 +1903,12 @@
/* Check for overflow */
/* result_len = self_len + count * (to_len-from_len) */
- product = count * (to_len-from_len);
+ product = (size_t)count * (to_len-from_len);
if (product / (to_len-from_len) != count) {
PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
return NULL;
}
- result_len = self_len + product;
+ result_len = (size_t)self_len + product;
if (result_len < 0) {
PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
return NULL;
--- ./Objects/stringobject.c.orig 2016-01-29 14:00:30.904046945 +0100
+++ ./Objects/stringobject.c 2016-01-29 14:01:14.120547063 +0100
@@ -2693,12 +2693,12 @@
/* Check for overflow */
/* result_len = self_len + count * (to_len-from_len) */
- product = count * (to_len-from_len);
+ product = (size_t)count * (to_len-from_len);
if (product / (to_len-from_len) != count) {
PyErr_SetString(PyExc_OverflowError, "replace string is too long");
return NULL;
}
- result_len = self_len + product;
+ result_len = (size_t)self_len + product;
if (result_len < 0) {
PyErr_SetString(PyExc_OverflowError, "replace string is too long");
return NULL;
--- Objects/bytearrayobject.c.orig 2016-01-29 14:14:36.713834152 +0100
+++ Objects/bytearrayobject.c 2016-01-29 14:17:50.880080712 +0100
@@ -357,7 +357,7 @@
if (count < 0)
count = 0;
mysize = Py_SIZE(self);
- size = mysize * count;
+ size = (size_t)mysize * count;
if (count != 0 && size / count != mysize)
return PyErr_NoMemory();
result = (PyByteArrayObject *)PyByteArray_FromStringAndSize(NULL, size);
@@ -382,7 +382,7 @@
if (count < 0)
count = 0;
mysize = Py_SIZE(self);
- size = mysize * count;
+ size = (size_t)mysize * count;
if (count != 0 && size / count != mysize)
return PyErr_NoMemory();
if (size < self->ob_alloc) {
@@ -1578,13 +1578,13 @@
/* Check for overflow */
/* result_len = count * to_len + self_len; */
- product = count * to_len;
+ product = (size_t)count * to_len;
if (product / to_len != count) {
PyErr_SetString(PyExc_OverflowError,
"replace string is too long");
return NULL;
}
- result_len = product + self_len;
+ result_len = (size_t)product + self_len;
if (result_len < 0) {
PyErr_SetString(PyExc_OverflowError,
"replace string is too long");
@@ -1833,12 +1833,12 @@
/* use the difference between current and new, hence the "-1" */
/* result_len = self_len + count * (to_len-1) */
- product = count * (to_len-1);
+ product = (size_t)count * (to_len-1);
if (product / (to_len-1) != count) {
PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
return NULL;
}
- result_len = self_len + product;
+ result_len = (size_t)self_len + product;
if (result_len < 0) {
PyErr_SetString(PyExc_OverflowError, "replace bytes is too long");
return NULL;
--- ./Objects/stringobject.c.orig 2016-01-29 14:18:21.392433741 +0100
+++ ./Objects/stringobject.c 2016-01-29 14:20:23.669848479 +0100
@@ -1084,7 +1084,7 @@
/* watch out for overflows: the size can overflow int,
* and the # of bytes needed can overflow size_t
*/
- size = Py_SIZE(a) * n;
+ size = (size_t)Py_SIZE(a) * n;
if (n && size / n != Py_SIZE(a)) {
PyErr_SetString(PyExc_OverflowError,
"repeated string is too long");
@@ -1644,9 +1644,9 @@
Py_DECREF(seq);
return NULL;
}
- sz += PyString_GET_SIZE(item);
+ sz += (size_t)PyString_GET_SIZE(item);
if (i != 0)
- sz += seplen;
+ sz += (size_t)seplen;
if (sz < old_sz || sz > PY_SSIZE_T_MAX) {
PyErr_SetString(PyExc_OverflowError,
"join() result is too long for a Python string");
@@ -2370,13 +2370,13 @@
/* Check for overflow */
/* result_len = count * to_len + self_len; */
- product = count * to_len;
+ product = (size_t)count * to_len;
if (product / to_len != count) {
PyErr_SetString(PyExc_OverflowError,
"replace string is too long");
return NULL;
}
- result_len = product + self_len;
+ result_len = (size_t)product + self_len;
if (result_len < 0) {
PyErr_SetString(PyExc_OverflowError,
"replace string is too long");
@@ -2624,12 +2624,12 @@
/* use the difference between current and new, hence the "-1" */
/* result_len = self_len + count * (to_len-1) */
- product = count * (to_len-1);
+ product = (size_t)count * (to_len-1);
if (product / (to_len-1) != count) {
PyErr_SetString(PyExc_OverflowError, "replace string is too long");
return NULL;
}
- result_len = self_len + product;
+ result_len = (size_t)self_len + product;
if (result_len < 0) {
PyErr_SetString(PyExc_OverflowError, "replace string is too long");
return NULL;
--- Objects/tupleobject.c.orig 2016-01-29 14:38:23.334287970 +0100
+++ Objects/tupleobject.c 2016-01-29 14:39:46.175240404 +0100
@@ -79,7 +79,7 @@
else
#endif
{
- Py_ssize_t nbytes = size * sizeof(PyObject *);
+ Py_ssize_t nbytes = (size_t)size * sizeof(PyObject *);
/* Check for overflow */
if (nbytes / sizeof(PyObject *) != (size_t)size ||
(nbytes > PY_SSIZE_T_MAX - sizeof(PyTupleObject) - sizeof(PyObject *)))
@@ -446,7 +446,7 @@
return NULL;
}
#define b ((PyTupleObject *)bb)
- size = Py_SIZE(a) + Py_SIZE(b);
+ size = (size_t)Py_SIZE(a) + Py_SIZE(b);
if (size < 0)
return PyErr_NoMemory();
np = (PyTupleObject *) PyTuple_New(size);
@@ -490,7 +490,7 @@
if (Py_SIZE(a) == 0)
return PyTuple_New(0);
}
- size = Py_SIZE(a) * n;
+ size = (size_t)Py_SIZE(a) * n;
if (size/Py_SIZE(a) != n)
return PyErr_NoMemory();
np = (PyTupleObject *) PyTuple_New(size);
1
0
Hello community,
here is the log from the commit of package libzip for openSUSE:Factory checked in at 2016-02-28 02:25:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libzip (Old)
and /work/SRC/openSUSE:Factory/.libzip.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libzip"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libzip/libzip.changes 2015-05-06 11:18:29.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libzip.new/libzip.changes 2016-02-28 02:25:56.000000000 +0100
@@ -1,0 +2,10 @@
+Mon Feb 22 07:56:17 UTC 2016 - pgajdos(a)suse.com
+
+- update to 1.1.2
+ * Improve support for 3MF files
+ * ziptool(1): command line tool to modify zip archives
+ * Speedups for archives with many entries
+ * Better APK support
+ * Documentation improvements
+
+-------------------------------------------------------------------
Old:
----
libzip-1.0.1.tar.xz
New:
----
libzip-1.1.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libzip.spec ++++++
--- /var/tmp/diff_new_pack.dW6joI/_old 2016-02-28 02:25:57.000000000 +0100
+++ /var/tmp/diff_new_pack.dW6joI/_new 2016-02-28 02:25:57.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libzip
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define soname 4
Name: libzip
-Version: 1.0.1
+Version: 1.1.2
Release: 0
Summary: C library for reading, creating, and modifying zip archives
License: BSD-3-Clause
@@ -82,7 +82,7 @@
%prep
%setup -q
-%patch -P 1 -p1
+%patch1
%build
autoreconf -fiv
@@ -105,6 +105,7 @@
%defattr(-,root,root)
%{_bindir}/zipcmp
%{_bindir}/zipmerge
+%{_bindir}/ziptool
%{_mandir}/man1/*.1*
%files -n libzip%{soname}
@@ -114,7 +115,7 @@
%files devel
%defattr(-,root,root)
-%doc AUTHORS API-CHANGES NEWS README THANKS TODO
+%doc AUTHORS API-CHANGES NEWS THANKS
%{_libdir}/%{name}.so
%{_includedir}/zip.h
%{_includedir}/zipconf.h
++++++ libzip-1.0.1.tar.xz -> libzip-1.1.2.tar.xz ++++++
++++ 20264 lines of diff (skipped)
++++++ libzip-ocloexec.patch ++++++
--- /var/tmp/diff_new_pack.dW6joI/_old 2016-02-28 02:25:57.000000000 +0100
+++ /var/tmp/diff_new_pack.dW6joI/_new 2016-02-28 02:25:57.000000000 +0100
@@ -2,13 +2,13 @@
lib/zip_source_filep.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
-Index: libzip-1.0.1/lib/zip_source_filep.c
+Index: lib/zip_source_filep.c
===================================================================
---- libzip-1.0.1.orig/lib/zip_source_filep.c
-+++ libzip-1.0.1/lib/zip_source_filep.c
-@@ -40,10 +40,7 @@
- #include <stdlib.h>
- #include <string.h>
+--- lib/zip_source_filep.c.orig 2016-01-31 08:42:36.000000000 +0100
++++ lib/zip_source_filep.c 2016-02-22 08:54:11.649671883 +0100
+@@ -42,10 +42,7 @@
+ #include <unistd.h>
+ #endif
-#ifdef _WIN32
-/* WIN32 needs <fcntl.h> for _O_BINARY */
@@ -17,16 +17,16 @@
/* Windows sys/types.h does not provide these */
#ifndef S_ISREG
-@@ -184,7 +181,7 @@ create_temp_output(struct read_file *ctx
+@@ -187,7 +184,7 @@
sprintf(temp, "%s.XXXXXX", ctx->fname);
- mask = umask(S_IXUSR | S_IRWXG | S_IRWXO);
+ mask = umask(_SAFE_MASK);
- if ((tfd=mkstemp(temp)) == -1) {
+ if ((tfd=mkostemp(temp, O_CLOEXEC)) == -1) {
zip_error_set(&ctx->error, ZIP_ER_TMPOPEN, errno);
umask(mask);
free(temp);
-@@ -275,7 +272,7 @@ read_file(void *state, void *data, zip_u
+@@ -278,7 +275,7 @@
case ZIP_SOURCE_OPEN:
if (ctx->fname) {
1
0
Hello community,
here is the log from the commit of package rubygem-rspec-core for openSUSE:Factory checked in at 2016-02-28 02:25:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-rspec-core (Old)
and /work/SRC/openSUSE:Factory/.rubygem-rspec-core.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-rspec-core"
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-rspec-core/rubygem-rspec-core.changes 2015-12-01 10:02:37.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.rubygem-rspec-core.new/rubygem-rspec-core.changes 2016-02-28 02:25:41.000000000 +0100
@@ -1,0 +2,20 @@
+Wed Jan 27 05:32:55 UTC 2016 - coolo(a)suse.com
+
+- updated to version 3.4.2
+ see installed Changelog.md
+
+ ### 3.4.2 / 2016-01-26
+ [Full Changelog](http://github.com/rspec/rspec-core/compare/v3.4.1...v3.4.2)
+
+ Bug Fixes:
+
+ * Fix `rspec --profile` when an example calls `abort` or `exit`.
+ (Bradley Schaefer, #2144)
+ * Fix `--drb` so that when no DRb server is running, it prevents
+ the DRb connection error from being listed as the cause of all
+ expectation failures. (Myron Marston, #2156)
+ * Fix syntax highlighter so that it works when the `coderay` gem is
+ installed as a rubygem but not already available on your load path
+ (as happens when you use bundler). (Myron Marston, #2159)
+
+-------------------------------------------------------------------
Old:
----
rspec-core-3.4.1.gem
New:
----
rspec-core-3.4.2.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-rspec-core.spec ++++++
--- /var/tmp/diff_new_pack.4vHYeJ/_old 2016-02-28 02:25:42.000000000 +0100
+++ /var/tmp/diff_new_pack.4vHYeJ/_new 2016-02-28 02:25:42.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package rubygem-rspec-core
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -24,7 +24,7 @@
#
Name: rubygem-rspec-core
-Version: 3.4.1
+Version: 3.4.2
Release: 0
%define mod_name rspec-core
%define mod_full_name %{mod_name}-%{version}
++++++ rspec-core-3.4.1.gem -> rspec-core-3.4.2.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Changelog.md new/Changelog.md
--- old/Changelog.md 2015-11-19 03:15:29.000000000 +0100
+++ new/Changelog.md 2016-01-27 00:11:21.000000000 +0100
@@ -1,3 +1,17 @@
+### 3.4.2 / 2016-01-26
+[Full Changelog](http://github.com/rspec/rspec-core/compare/v3.4.1...v3.4.2)
+
+Bug Fixes:
+
+* Fix `rspec --profile` when an example calls `abort` or `exit`.
+ (Bradley Schaefer, #2144)
+* Fix `--drb` so that when no DRb server is running, it prevents
+ the DRb connection error from being listed as the cause of all
+ expectation failures. (Myron Marston, #2156)
+* Fix syntax highlighter so that it works when the `coderay` gem is
+ installed as a rubygem but not already available on your load path
+ (as happens when you use bundler). (Myron Marston, #2159)
+
### 3.4.1 / 2015-11-18
[Full Changelog](http://github.com/rspec/rspec-core/compare/v3.4.0...v3.4.1)
Files old/checksums.yaml.gz and new/checksums.yaml.gz differ
Files old/checksums.yaml.gz.sig and new/checksums.yaml.gz.sig differ
Files old/data.tar.gz.sig and new/data.tar.gz.sig differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/example.rb new/lib/rspec/core/example.rb
--- old/lib/rspec/core/example.rb 2015-11-19 03:15:30.000000000 +0100
+++ new/lib/rspec/core/example.rb 2016-01-27 00:11:21.000000000 +0100
@@ -260,6 +260,7 @@
finish(reporter)
ensure
+ execution_result.ensure_timing_set(clock)
RSpec.current_example = nil
end
@@ -565,13 +566,23 @@
# @api private
# Records the finished status of the example.
def record_finished(status, finished_at)
- self.status = status
- self.finished_at = finished_at
- self.run_time = (finished_at - started_at).to_f
+ self.status = status
+ calculate_run_time(finished_at)
+ end
+
+ # @api private
+ # Populates finished_at and run_time if it has not yet been set
+ def ensure_timing_set(clock)
+ calculate_run_time(clock.now) unless finished_at
end
private
+ def calculate_run_time(finished_at)
+ self.finished_at = finished_at
+ self.run_time = (finished_at - started_at).to_f
+ end
+
# For backwards compatibility we present `status` as a string
# when presenting the legacy hash interface.
def hash_for_delegation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/metadata.rb new/lib/rspec/core/metadata.rb
--- old/lib/rspec/core/metadata.rb 2015-11-19 03:15:30.000000000 +0100
+++ new/lib/rspec/core/metadata.rb 2016-01-27 00:11:21.000000000 +0100
@@ -47,7 +47,9 @@
return nil if line == '-e:1'.freeze
line
rescue SecurityError
+ # :nocov:
nil
+ # :nocov:
end
# @private
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/runner.rb new/lib/rspec/core/runner.rb
--- old/lib/rspec/core/runner.rb 2015-11-19 03:15:30.000000000 +0100
+++ new/lib/rspec/core/runner.rb 2016-01-27 00:11:21.000000000 +0100
@@ -2,6 +2,10 @@
module Core
# Provides the main entry point to run a suite of RSpec examples.
class Runner
+ # @attr_reader
+ # @private
+ attr_reader :options, :configuration, :world
+
# Register an `at_exit` hook that runs the suite when the process exits.
#
# @note This is not generally needed. The `rspec` command takes care
@@ -65,13 +69,13 @@
require 'rspec/core/drb'
begin
DRbRunner.new(options).run(err, out)
+ return
rescue DRb::DRbConnError
err.puts "No DRb server is running. Running in local process instead ..."
- new(options).run(err, out)
end
- else
- new(options).run(err, out)
end
+
+ new(options).run(err, out)
end
def initialize(options, configuration=RSpec.configuration, world=RSpec.world)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/source/syntax_highlighter.rb new/lib/rspec/core/source/syntax_highlighter.rb
--- old/lib/rspec/core/source/syntax_highlighter.rb 2015-11-19 03:15:30.000000000 +0100
+++ new/lib/rspec/core/source/syntax_highlighter.rb 2016-01-27 00:11:21.000000000 +0100
@@ -30,7 +30,7 @@
def color_enabled_implementation
@color_enabled_implementation ||= begin
- ::Kernel.require 'coderay'
+ require 'coderay'
CodeRayImplementation
rescue LoadError
NoSyntaxHighlightingImplementation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rspec/core/version.rb new/lib/rspec/core/version.rb
--- old/lib/rspec/core/version.rb 2015-11-19 03:15:30.000000000 +0100
+++ new/lib/rspec/core/version.rb 2016-01-27 00:11:21.000000000 +0100
@@ -3,7 +3,7 @@
# Version information for RSpec Core.
module Version
# Current version of RSpec Core, in semantic versioning format.
- STRING = '3.4.1'
+ STRING = '3.4.2'
end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2015-11-19 03:15:29.000000000 +0100
+++ new/metadata 2016-01-27 00:11:21.000000000 +0100
@@ -1,7 +1,7 @@
--- !ruby/object:Gem::Specification
name: rspec-core
version: !ruby/object:Gem::Version
- version: 3.4.1
+ version: 3.4.2
platform: ruby
authors:
- Steven Baker
@@ -46,7 +46,7 @@
ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
F3MdtaDehhjC
-----END CERTIFICATE-----
-date: 2015-11-19 00:00:00.000000000 Z
+date: 2016-01-26 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: rspec-support
@@ -119,20 +119,6 @@
- !ruby/object:Gem::Version
version: 0.6.2
- !ruby/object:Gem::Dependency
- name: nokogiri
- requirement: !ruby/object:Gem::Requirement
- requirements:
- - - "~>"
- - !ruby/object:Gem::Version
- version: '1.5'
- type: :development
- prerelease: false
- version_requirements: !ruby/object:Gem::Requirement
- requirements:
- - - "~>"
- - !ruby/object:Gem::Version
- version: '1.5'
-- !ruby/object:Gem::Dependency
name: coderay
requirement: !ruby/object:Gem::Requirement
requirements:
@@ -310,6 +296,6 @@
rubygems_version: 2.2.2
signing_key:
specification_version: 4
-summary: rspec-core-3.4.1
+summary: rspec-core-3.4.2
test_files: []
has_rdoc:
Files old/metadata.gz.sig and new/metadata.gz.sig differ
1
0
Hello community,
here is the log from the commit of package emacs for openSUSE:Factory checked in at 2016-02-28 02:25:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/emacs (Old)
and /work/SRC/openSUSE:Factory/.emacs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "emacs"
Changes:
--------
--- /work/SRC/openSUSE:Factory/emacs/emacs.changes 2015-12-01 10:01:32.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.emacs.new/emacs.changes 2016-02-28 02:25:23.000000000 +0100
@@ -1,0 +2,17 @@
+Tue Feb 2 14:18:51 UTC 2016 - normand(a)linux.vnet.ibm.com
+
+- Add a set of patches to avoid build error with binutils 2.28
+ emacs-24-0010-ELF-unexec-Correct-section-header-index.patch
+ emacs-24-0011-ELF-unexec-Tidy-code.patch
+ emacs-24-0012-ELF-unexec-Merge-Alpha-and-MIPS-COFF-debug-handling.patch
+ emacs-24-0013-ELF-unexec-Symbol-table-patching.patch
+ emacs-24-0014-ELF-unexec-_OBJC_-symbols-in-bss-sections.patch
+ emacs-24-0015-ELF-unexec-R_-_NONE-relocs.patch
+ emacs-24-0016-ELF-unexec-Drive-from-PT_LOAD-header-rather-than-sec.patch
+ emacs-24-0017-ELF-unexec-Don-t-insert-a-new-section.patch
+ emacs-24-0018-src-unexelf.c-NEW_PROGRAM_H-Remove-unused-macro-Bug-.patch
+ emacs-24-0019-ELF-unexec-align-section-header.patch
+ list previously identified in debian bug
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808347
+
+-------------------------------------------------------------------
New:
----
emacs-24-0010-ELF-unexec-Correct-section-header-index.patch
emacs-24-0011-ELF-unexec-Tidy-code.patch
emacs-24-0012-ELF-unexec-Merge-Alpha-and-MIPS-COFF-debug-handling.patch
emacs-24-0013-ELF-unexec-Symbol-table-patching.patch
emacs-24-0014-ELF-unexec-_OBJC_-symbols-in-bss-sections.patch
emacs-24-0015-ELF-unexec-R_-_NONE-relocs.patch
emacs-24-0016-ELF-unexec-Drive-from-PT_LOAD-header-rather-than-sec.patch
emacs-24-0017-ELF-unexec-Don-t-insert-a-new-section.patch
emacs-24-0018-src-unexelf.c-NEW_PROGRAM_H-Remove-unused-macro-Bug-.patch
emacs-24-0019-ELF-unexec-align-section-header.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ emacs.spec ++++++
--- /var/tmp/diff_new_pack.BVAU62/_old 2016-02-28 02:25:26.000000000 +0100
+++ /var/tmp/diff_new_pack.BVAU62/_new 2016-02-28 02:25:26.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package emacs
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -114,6 +114,18 @@
Patch15: emacs-24.3-iconic.patch
Patch16: emacs-24.4-flyspell.patch
Patch22: emacs-24.1-bnc628268.patch
+
+Patch30: emacs-24-0010-ELF-unexec-Correct-section-header-index.patch
+Patch31: emacs-24-0011-ELF-unexec-Tidy-code.patch
+Patch32: emacs-24-0012-ELF-unexec-Merge-Alpha-and-MIPS-COFF-debug-handling.patch
+Patch33: emacs-24-0013-ELF-unexec-Symbol-table-patching.patch
+Patch34: emacs-24-0014-ELF-unexec-_OBJC_-symbols-in-bss-sections.patch
+Patch35: emacs-24-0015-ELF-unexec-R_-_NONE-relocs.patch
+Patch36: emacs-24-0016-ELF-unexec-Drive-from-PT_LOAD-header-rather-than-sec.patch
+Patch37: emacs-24-0017-ELF-unexec-Don-t-insert-a-new-section.patch
+Patch38: emacs-24-0018-src-unexelf.c-NEW_PROGRAM_H-Remove-unused-macro-Bug-.patch
+Patch39: emacs-24-0019-ELF-unexec-align-section-header.patch
+
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%{expand: %%global include_info %(test -s /usr/share/info/info.info* && echo 0 || echo 1)}
%{expand: %%global _exec_prefix %(type -p pkg-config &>/dev/null && pkg-config --variable prefix x11 || echo /usr/X11R6)}
@@ -228,6 +240,16 @@
%patch16 -p0 -b .flyspell
%patch22 -p0 -b .obsolate
%patch -p0 -b .0
+%patch30 -p1
+%patch31 -p1
+%patch32 -p1
+%patch33 -p1
+%patch34 -p1
+%patch35 -p1
+%patch36 -p1
+%patch37 -p1
+%patch38 -p1
+%patch39 -p1
%if %{without autoconf}
# We don't want to run autoconf
++++++ emacs-24-0010-ELF-unexec-Correct-section-header-index.patch ++++++
>From 0a97fb1992c8cc3612a2358f576f774ea1f36777 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra(a)gmail.com>
Date: Sun, 8 Nov 2015 09:28:59 -0800
Subject: ELF unexec: Correct section header index
Emacs should build on ppc64el. A problem with the bss has been fixed.
This upstream patch has been added [1/10]:
ELF unexec: Correct section header index
First a small fix. The code incorrectly uses "NEW_SECTION_H (n)" when
it should have been using "NEW_SECTION_H (nn)" to find the name of the
section currently being processed. Of course, before the bss
sections, n and nn have the same value, so this doesn't matter except
in the case of .sbss. For .sbss this probably meant .bss (most likely
the next section) was copied from memory. A later patch removes the
bogus .sbss handling anyway.
* unexelf.c (unexec): Use correct index to look up names.
Origin: upstream, commit: 0bcd08ef052bca9b8d08696068c2a0c387d0dd56
Bug: http://debbugs.gnu.org/20614
Bug-Debian: http://bugs.debian.org/808347
Added-by: Rob Browning <rlb(a)defaultvalue.org>
---
src/unexelf.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/unexelf.c b/src/unexelf.c
index 59e2725..d4a36f8 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -1016,12 +1016,12 @@ temacs:
/* Write out the sections. .data and .data1 (and data2, called
".data" in the strings table) get copied from the current process
instead of the old file. */
- if (!strcmp (old_section_names + NEW_SECTION_H (n).sh_name, ".data")
- || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
+ if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".data")
+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
".sdata")
- || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
".lit4")
- || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
".lit8")
/* The conditional bit below was in Oliva's original code
(1999-08-25) and seems to have been dropped by mistake
@@ -1044,14 +1044,14 @@ temacs:
loader, but I never got anywhere with an SGI support call
seeking clues. -- fx 2002-11-29. */
#ifdef IRIX6_5
- || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
".got")
#endif
- || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
".sdata1")
- || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
".data1")
- || !strcmp ((old_section_names + NEW_SECTION_H (n).sh_name),
+ || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
".sbss"))
src = (caddr_t) OLD_SECTION_H (n).sh_addr;
else
++++++ emacs-24-0011-ELF-unexec-Tidy-code.patch ++++++
>From 9fa97f0c2c1afae39b6662a836910deb1e0130ad Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra(a)gmail.com>
Date: Sun, 8 Nov 2015 09:28:59 -0800
Subject: ELF unexec: Tidy code
Emacs should build on ppc64el. A problem with the bss has been fixed.
This upstream patch has been added [2/10]:
ELF unexec: Tidy code
Separate out some of the more mechanical changes so following patches
are smaller.
* unexelf.c (unexec): Rearrange initialisation of program
header vars. Use pointer vars in loops rather than indexing
section header array via macros. Simplify _OBJC_ sym code
and reloc handling code.
Origin: upstream, commit: 856f4eaba8a76953e0bbcfc7ebb0ca4f2e3cf351
Bug: http://debbugs.gnu.org/20614
Bug-Debian: http://bugs.debian.org/808347
Added-by: Rob Browning <rlb(a)defaultvalue.org>
---
src/unexelf.c | 210 +++++++++++++++++++++++++++-------------------------------
1 file changed, 96 insertions(+), 114 deletions(-)
diff --git a/src/unexelf.c b/src/unexelf.c
index d4a36f8..f7465cb 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -813,20 +813,11 @@ unexec (const char *new_name, const char *old_name)
if (new_base == MAP_FAILED)
fatal ("Can't allocate buffer for %s: %s", old_name, strerror (errno));
- new_file_h = (ElfW (Ehdr) *) new_base;
- new_program_h = (ElfW (Phdr) *) ((byte *) new_base + old_file_h->e_phoff);
- new_section_h = (ElfW (Shdr) *)
- ((byte *) new_base + old_file_h->e_shoff + new_data2_incr);
-
/* Make our new file, program and section headers as copies of the
originals. */
+ new_file_h = (ElfW (Ehdr) *) new_base;
memcpy (new_file_h, old_file_h, old_file_h->e_ehsize);
- memcpy (new_program_h, old_program_h,
- old_file_h->e_phnum * old_file_h->e_phentsize);
-
- /* Modify the e_shstrndx if necessary. */
- PATCH_INDEX (new_file_h->e_shstrndx);
/* Fix up file header. We'll add one section. Section header is
further away now. */
@@ -834,6 +825,16 @@ unexec (const char *new_name, const char *old_name)
new_file_h->e_shoff += new_data2_incr;
new_file_h->e_shnum += 1;
+ /* Modify the e_shstrndx if necessary. */
+ PATCH_INDEX (new_file_h->e_shstrndx);
+
+ new_program_h = (ElfW (Phdr) *) ((byte *) new_base + old_file_h->e_phoff);
+ new_section_h = (ElfW (Shdr) *)
+ ((byte *) new_base + old_file_h->e_shoff + new_data2_incr);
+
+ memcpy (new_program_h, old_program_h,
+ old_file_h->e_phnum * old_file_h->e_phentsize);
+
#ifdef UNEXELF_DEBUG
DEBUG_LOG (old_file_h->e_shoff);
fprintf (stderr, "Old section count %td\n", (ptrdiff_t) old_file_h->e_shnum);
@@ -906,32 +907,35 @@ unexec (const char *new_name, const char *old_name)
for (n = 1, nn = 1; n < old_file_h->e_shnum; n++, nn++)
{
caddr_t src;
+ ElfW (Shdr) *old_shdr = &OLD_SECTION_H (n);
+ ElfW (Shdr) *new_shdr = &NEW_SECTION_H (nn);
+
/* If it is (s)bss section, insert the new data2 section before it. */
/* new_data2_index is the index of either old_sbss or old_bss, that was
chosen as a section for new_data2. */
if (n == new_data2_index)
{
/* Steal the data section header for this data2 section. */
- memcpy (&NEW_SECTION_H (nn), &OLD_SECTION_H (old_data_index),
+ memcpy (new_shdr, &OLD_SECTION_H (old_data_index),
new_file_h->e_shentsize);
- NEW_SECTION_H (nn).sh_addr = new_data2_addr;
- NEW_SECTION_H (nn).sh_offset = new_data2_offset;
- NEW_SECTION_H (nn).sh_size = new_data2_size;
+ new_shdr->sh_addr = new_data2_addr;
+ new_shdr->sh_offset = new_data2_offset;
+ new_shdr->sh_size = new_data2_size;
/* Use the bss section's alignment. This will assure that the
new data2 section always be placed in the same spot as the old
bss section by any other application. */
- NEW_SECTION_H (nn).sh_addralign = OLD_SECTION_H (n).sh_addralign;
+ new_shdr->sh_addralign = old_shdr->sh_addralign;
/* Now copy over what we have in the memory now. */
- memcpy (NEW_SECTION_H (nn).sh_offset + new_base,
- (caddr_t) OLD_SECTION_H (n).sh_addr,
+ memcpy (new_shdr->sh_offset + new_base,
+ (caddr_t) old_shdr->sh_addr,
new_data2_size);
nn++;
+ new_shdr++;
}
- memcpy (&NEW_SECTION_H (nn), &OLD_SECTION_H (n),
- old_file_h->e_shentsize);
+ memcpy (new_shdr, old_shdr, old_file_h->e_shentsize);
if (n == old_bss_index
/* The new bss and sbss section's size is zero, and its file offset
@@ -940,13 +944,13 @@ unexec (const char *new_name, const char *old_name)
)
{
/* NN should be `old_s?bss_index + 1' at this point. */
- NEW_SECTION_H (nn).sh_offset = new_data2_offset + new_data2_size;
- NEW_SECTION_H (nn).sh_addr = new_data2_addr + new_data2_size;
+ new_shdr->sh_offset = new_data2_offset + new_data2_size;
+ new_shdr->sh_addr = new_data2_addr + new_data2_size;
/* Let the new bss section address alignment be the same as the
section address alignment followed the old bss section, so
this section will be placed in exactly the same place. */
- NEW_SECTION_H (nn).sh_addralign = OLD_SECTION_H (nn).sh_addralign;
- NEW_SECTION_H (nn).sh_size = 0;
+ new_shdr->sh_addralign = OLD_SECTION_H (nn).sh_addralign;
+ new_shdr->sh_size = 0;
}
else
{
@@ -976,53 +980,50 @@ temacs:
25 1709 0x4 0x10
*/
- if (NEW_SECTION_H (nn).sh_offset >= old_bss_offset
- || (NEW_SECTION_H (nn).sh_offset + NEW_SECTION_H (nn).sh_size
+ if (new_shdr->sh_offset >= old_bss_offset
+ || (new_shdr->sh_offset + new_shdr->sh_size
> new_data2_offset))
- NEW_SECTION_H (nn).sh_offset += new_data2_incr;
+ new_shdr->sh_offset += new_data2_incr;
/* Any section that was originally placed after the section
header table should now be off by the size of one section
header table entry. */
- if (NEW_SECTION_H (nn).sh_offset > new_file_h->e_shoff)
- NEW_SECTION_H (nn).sh_offset += new_file_h->e_shentsize;
+ if (new_shdr->sh_offset > new_file_h->e_shoff)
+ new_shdr->sh_offset += new_file_h->e_shentsize;
}
/* If any section hdr refers to the section after the new .data
section, make it refer to next one because we have inserted
a new section in between. */
- PATCH_INDEX (NEW_SECTION_H (nn).sh_link);
+ PATCH_INDEX (new_shdr->sh_link);
/* For symbol tables, info is a symbol table index,
so don't change it. */
- if (NEW_SECTION_H (nn).sh_type != SHT_SYMTAB
- && NEW_SECTION_H (nn).sh_type != SHT_DYNSYM)
- PATCH_INDEX (NEW_SECTION_H (nn).sh_info);
+ if (new_shdr->sh_type != SHT_SYMTAB
+ && new_shdr->sh_type != SHT_DYNSYM)
+ PATCH_INDEX (new_shdr->sh_info);
if (old_sbss_index != -1)
- if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".sbss"))
+ if (!strcmp (old_section_names + new_shdr->sh_name, ".sbss"))
{
- NEW_SECTION_H (nn).sh_offset =
- round_up (NEW_SECTION_H (nn).sh_offset,
- NEW_SECTION_H (nn).sh_addralign);
- NEW_SECTION_H (nn).sh_type = SHT_PROGBITS;
+ new_shdr->sh_offset =
+ round_up (new_shdr->sh_offset,
+ new_shdr->sh_addralign);
+ new_shdr->sh_type = SHT_PROGBITS;
}
/* Now, start to copy the content of sections. */
- if (NEW_SECTION_H (nn).sh_type == SHT_NULL
- || NEW_SECTION_H (nn).sh_type == SHT_NOBITS)
+ if (new_shdr->sh_type == SHT_NULL
+ || new_shdr->sh_type == SHT_NOBITS)
continue;
/* Write out the sections. .data and .data1 (and data2, called
".data" in the strings table) get copied from the current process
instead of the old file. */
- if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".data")
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".sdata")
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".lit4")
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".lit8")
+ if (!strcmp (old_section_names + new_shdr->sh_name, ".data")
+ || !strcmp (old_section_names + new_shdr->sh_name, ".sdata")
+ || !strcmp (old_section_names + new_shdr->sh_name, ".lit4")
+ || !strcmp (old_section_names + new_shdr->sh_name, ".lit8")
/* The conditional bit below was in Oliva's original code
(1999-08-25) and seems to have been dropped by mistake
subsequently. It prevents a crash at startup under X in
@@ -1044,28 +1045,22 @@ temacs:
loader, but I never got anywhere with an SGI support call
seeking clues. -- fx 2002-11-29. */
#ifdef IRIX6_5
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".got")
+ || !strcmp (old_section_names + new_shdr->sh_name, ".got")
#endif
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".sdata1")
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".data1")
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".sbss"))
- src = (caddr_t) OLD_SECTION_H (n).sh_addr;
+ || !strcmp (old_section_names + new_shdr->sh_name, ".sdata1")
+ || !strcmp (old_section_names + new_shdr->sh_name, ".data1")
+ || !strcmp (old_section_names + new_shdr->sh_name, ".sbss"))
+ src = (caddr_t) old_shdr->sh_addr;
else
- src = old_base + OLD_SECTION_H (n).sh_offset;
+ src = old_base + old_shdr->sh_offset;
- memcpy (NEW_SECTION_H (nn).sh_offset + new_base, src,
- NEW_SECTION_H (nn).sh_size);
+ memcpy (new_shdr->sh_offset + new_base, src, new_shdr->sh_size);
#if defined __alpha__ && !defined __OpenBSD__
/* Update Alpha COFF symbol table: */
- if (strcmp (old_section_names + OLD_SECTION_H (n).sh_name, ".mdebug")
- == 0)
+ if (strcmp (old_section_names + old_shdr->sh_name, ".mdebug") == 0)
{
- pHDRR symhdr = (pHDRR) (NEW_SECTION_H (nn).sh_offset + new_base);
+ pHDRR symhdr = (pHDRR) (new_shdr->sh_offset + new_base);
symhdr->cbLineOffset += new_data2_size;
symhdr->cbDnOffset += new_data2_size;
@@ -1082,13 +1077,13 @@ temacs:
#endif /* __alpha__ && !__OpenBSD__ */
#if defined (_SYSTYPE_SYSV)
- if (NEW_SECTION_H (nn).sh_type == SHT_MIPS_DEBUG
+ if (new_shdr->sh_type == SHT_MIPS_DEBUG
&& old_mdebug_index != -1)
{
- ptrdiff_t new_offset = NEW_SECTION_H (nn).sh_offset;
+ ptrdiff_t new_offset = new_shdr->sh_offset;
ptrdiff_t old_offset = OLD_SECTION_H (old_mdebug_index).sh_offset;
ptrdiff_t diff = new_offset - old_offset;
- HDRR *phdr = (HDRR *)(NEW_SECTION_H (nn).sh_offset + new_base);
+ HDRR *phdr = (HDRR *) (new_shdr->sh_offset + new_base);
if (diff)
{
@@ -1124,8 +1119,8 @@ temacs:
n_phdrr->__fileaddr += movement; \
}
- HDRR * o_phdrr = (HDRR *)((byte *)old_base + OLD_SECTION_H (n).sh_offset);
- HDRR * n_phdrr = (HDRR *)((byte *)new_base + NEW_SECTION_H (nn).sh_offset);
+ HDRR *o_phdrr = (HDRR *) ((byte *) old_base + old_shdr->sh_offset);
+ HDRR *n_phdrr = (HDRR *) ((byte *) new_base + new_shdr->sh_offset);
unsigned movement = new_data2_size;
MDEBUGADJUST (idnMax, cbDnOffset);
@@ -1142,8 +1137,8 @@ temacs:
requires special handling. */
if (n_phdrr->cbLine > 0)
{
- if (o_phdrr->cbLineOffset > (OLD_SECTION_H (n).sh_offset
- + OLD_SECTION_H (n).sh_size))
+ if (o_phdrr->cbLineOffset > (old_shdr->sh_offset
+ + old_shdr->sh_size))
{
/* line data is in a hole in elf. do special copy and adjust
for this ld mistake.
@@ -1163,13 +1158,11 @@ temacs:
#endif /* __sgi */
/* If it is the symbol table, its st_shndx field needs to be patched. */
- if (NEW_SECTION_H (nn).sh_type == SHT_SYMTAB
- || NEW_SECTION_H (nn).sh_type == SHT_DYNSYM)
+ if (new_shdr->sh_type == SHT_SYMTAB
+ || new_shdr->sh_type == SHT_DYNSYM)
{
- ElfW (Shdr) *spt = &NEW_SECTION_H (nn);
- ptrdiff_t num = spt->sh_size / spt->sh_entsize;
- ElfW (Sym) * sym = (ElfW (Sym) *) (NEW_SECTION_H (nn).sh_offset +
- new_base);
+ ptrdiff_t num = new_shdr->sh_size / new_shdr->sh_entsize;
+ ElfW (Sym) *sym = (ElfW (Sym) *) (new_shdr->sh_offset + new_base);
for (; num--; sym++)
{
if ((sym->st_shndx == SHN_UNDEF)
@@ -1187,15 +1180,16 @@ temacs:
{
byte *symnames;
ElfW (Sym) *symp, *symendp;
+ ElfW (Shdr) *sym_shdr = &NEW_SECTION_H (n);
- if (NEW_SECTION_H (n).sh_type != SHT_DYNSYM
- && NEW_SECTION_H (n).sh_type != SHT_SYMTAB)
+ if (sym_shdr->sh_type != SHT_DYNSYM
+ && sym_shdr->sh_type != SHT_SYMTAB)
continue;
symnames = ((byte *) new_base
- + NEW_SECTION_H (NEW_SECTION_H (n).sh_link).sh_offset);
- symp = (ElfW (Sym) *) (NEW_SECTION_H (n).sh_offset + new_base);
- symendp = (ElfW (Sym) *) ((byte *)symp + NEW_SECTION_H (n).sh_size);
+ + NEW_SECTION_H (sym_shdr->sh_link).sh_offset);
+ symp = (ElfW (Sym) *) (sym_shdr->sh_offset + new_base);
+ symendp = (ElfW (Sym) *) ((byte *) symp + sym_shdr->sh_size);
for (; symp < symendp; symp ++)
{
@@ -1219,22 +1213,21 @@ temacs:
if (strncmp ((char *) (symnames + symp->st_name),
"_OBJC_", sizeof ("_OBJC_") - 1) == 0)
{
- caddr_t old, new;
+ ElfW (Shdr) *new_shdr = &NEW_SECTION_H (symp->st_shndx);
+ ptrdiff_t reladdr = symp->st_value - new_shdr->sh_addr;
+ ptrdiff_t newoff = reladdr + new_shdr->sh_offset;
- new = ((symp->st_value - NEW_SECTION_H (symp->st_shndx).sh_addr)
- + NEW_SECTION_H (symp->st_shndx).sh_offset + new_base);
/* "Unpatch" index. */
nn = symp->st_shndx;
if (nn > old_bss_index)
nn--;
if (nn == old_bss_index)
- memset (new, 0, symp->st_size);
+ memset (new_base + newoff, 0, symp->st_size);
else
{
- old = ((symp->st_value
- - NEW_SECTION_H (symp->st_shndx).sh_addr)
- + OLD_SECTION_H (nn).sh_offset + old_base);
- memcpy (new, old, symp->st_size);
+ ElfW (Shdr) *old_shdr = &OLD_SECTION_H (nn);
+ ptrdiff_t oldoff = reladdr + old_shdr->sh_offset;
+ memcpy (new_base + newoff, old_base + oldoff, symp->st_size);
}
}
#endif
@@ -1245,13 +1238,10 @@ temacs:
that it can undo relocations performed by the runtime linker. */
for (n = new_file_h->e_shnum; 0 < --n; )
{
- ElfW (Shdr) section = NEW_SECTION_H (n);
-
- /* Cause a compilation error if anyone uses n instead of nn below. */
- #define n ((void) 0);
- n /* Prevent 'macro "n" is not used' warnings. */
+ ElfW (Shdr) *rel_shdr = &NEW_SECTION_H (n);
+ ElfW (Shdr) *shdr;
- switch (section.sh_type)
+ switch (rel_shdr->sh_type)
{
default:
break;
@@ -1260,28 +1250,22 @@ temacs:
/* This code handles two different size structs, but there should
be no harm in that provided that r_offset is always the first
member. */
- nn = section.sh_info;
- if (!strcmp (old_section_names + NEW_SECTION_H (nn).sh_name, ".data")
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".sdata")
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".lit4")
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".lit8")
+ shdr = &NEW_SECTION_H (rel_shdr->sh_info);
+ if (!strcmp (old_section_names + shdr->sh_name, ".data")
+ || !strcmp (old_section_names + shdr->sh_name, ".sdata")
+ || !strcmp (old_section_names + shdr->sh_name, ".lit4")
+ || !strcmp (old_section_names + shdr->sh_name, ".lit8")
#ifdef IRIX6_5 /* see above */
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".got")
+ || !strcmp (old_section_names + shdr->sh_name, ".got")
#endif
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".sdata1")
- || !strcmp ((old_section_names + NEW_SECTION_H (nn).sh_name),
- ".data1"))
+ || !strcmp (old_section_names + shdr->sh_name, ".sdata1")
+ || !strcmp (old_section_names + shdr->sh_name, ".data1"))
{
- ElfW (Addr) offset = (NEW_SECTION_H (nn).sh_addr
- - NEW_SECTION_H (nn).sh_offset);
- caddr_t reloc = old_base + section.sh_offset, end;
- for (end = reloc + section.sh_size; reloc < end;
- reloc += section.sh_entsize)
+ ElfW (Addr) offset = shdr->sh_addr - shdr->sh_offset;
+ caddr_t reloc = old_base + rel_shdr->sh_offset, end;
+ for (end = reloc + rel_shdr->sh_size;
+ reloc < end;
+ reloc += rel_shdr->sh_entsize)
{
ElfW (Addr) addr = ((ElfW (Rel) *) reloc)->r_offset - offset;
#ifdef __alpha__
@@ -1296,8 +1280,6 @@ temacs:
}
break;
}
-
- #undef n
}
/* Write out new_file, and free the buffers. */
++++++ emacs-24-0012-ELF-unexec-Merge-Alpha-and-MIPS-COFF-debug-handling.patch ++++++
>From 2cb9075979e413e4cc31c85d3bd830f791cc574b Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra(a)gmail.com>
Date: Sun, 8 Nov 2015 09:28:59 -0800
Subject: ELF unexec: Merge Alpha and MIPS COFF debug handling
Emacs should build on ppc64el. A problem with the bss has been fixed.
This upstream patch has been added [3/10]:
ELF unexec: Merge Alpha and MIPS COFF debug handling
* unexelf.c (unexec): Merge Alpha and MIPS COFF debug handling.
Don't find .mdebug section index, find the section in the loop.
Allow for unlikely possibility that .mdebug is located at sh_offset
before bss segment, by calculating move from difference in
sh_offset rather than just assuming new_data2_size. Simplify
cbLineOffset handling.
Origin: upstream, commit: 47c6e3035b8182c6436de4673473de7824ad59f1
Bug: http://debbugs.gnu.org/20614
Bug-Debian: http://bugs.debian.org/808347
Added-by: Rob Browning <rlb(a)defaultvalue.org>
---
src/unexelf.c | 96 ++++++++++++++++++-----------------------------------------
1 file changed, 29 insertions(+), 67 deletions(-)
diff --git a/src/unexelf.c b/src/unexelf.c
index f7465cb..07c2ebe 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -660,9 +660,6 @@ unexec (const char *new_name, const char *old_name)
ptrdiff_t n, nn;
ptrdiff_t old_bss_index, old_sbss_index, old_plt_index;
ptrdiff_t old_data_index, new_data2_index;
-#if defined _SYSTYPE_SYSV || defined __sgi
- ptrdiff_t old_mdebug_index;
-#endif
struct stat stat_buf;
off_t old_file_size;
int mask;
@@ -707,13 +704,6 @@ unexec (const char *new_name, const char *old_name)
old_section_names = (char *) old_base
+ OLD_SECTION_H (old_file_h->e_shstrndx).sh_offset;
- /* Find the mdebug section, if any. */
-
-#if defined _SYSTYPE_SYSV || defined __sgi
- old_mdebug_index = find_section (".mdebug", old_section_names,
- old_name, old_file_h, old_section_h, 1);
-#endif
-
/* Find the old .bss section. Figure out parameters of the new
data2 and bss sections. */
@@ -1056,51 +1046,31 @@ temacs:
memcpy (new_shdr->sh_offset + new_base, src, new_shdr->sh_size);
-#if defined __alpha__ && !defined __OpenBSD__
- /* Update Alpha COFF symbol table: */
- if (strcmp (old_section_names + old_shdr->sh_name, ".mdebug") == 0)
- {
- pHDRR symhdr = (pHDRR) (new_shdr->sh_offset + new_base);
-
- symhdr->cbLineOffset += new_data2_size;
- symhdr->cbDnOffset += new_data2_size;
- symhdr->cbPdOffset += new_data2_size;
- symhdr->cbSymOffset += new_data2_size;
- symhdr->cbOptOffset += new_data2_size;
- symhdr->cbAuxOffset += new_data2_size;
- symhdr->cbSsOffset += new_data2_size;
- symhdr->cbSsExtOffset += new_data2_size;
- symhdr->cbFdOffset += new_data2_size;
- symhdr->cbRfdOffset += new_data2_size;
- symhdr->cbExtOffset += new_data2_size;
- }
-#endif /* __alpha__ && !__OpenBSD__ */
-
-#if defined (_SYSTYPE_SYSV)
- if (new_shdr->sh_type == SHT_MIPS_DEBUG
- && old_mdebug_index != -1)
+#if (defined __alpha__ && !defined __OpenBSD__) || defined _SYSTYPE_SYSV
+ /* Update Alpha and MIPS COFF debug symbol table. */
+ if (strcmp (old_section_names + new_shdr->sh_name, ".mdebug") == 0
+ && new_shdr->sh_offset - old_shdr->sh_offset != 0
+#if defined _SYSTYPE_SYSV
+ && new_shdr->sh_type == SHT_MIPS_DEBUG
+#endif
+ )
{
- ptrdiff_t new_offset = new_shdr->sh_offset;
- ptrdiff_t old_offset = OLD_SECTION_H (old_mdebug_index).sh_offset;
- ptrdiff_t diff = new_offset - old_offset;
+ ptrdiff_t diff = new_shdr->sh_offset - old_shdr->sh_offset;
HDRR *phdr = (HDRR *) (new_shdr->sh_offset + new_base);
- if (diff)
- {
- phdr->cbLineOffset += diff;
- phdr->cbDnOffset += diff;
- phdr->cbPdOffset += diff;
- phdr->cbSymOffset += diff;
- phdr->cbOptOffset += diff;
- phdr->cbAuxOffset += diff;
- phdr->cbSsOffset += diff;
- phdr->cbSsExtOffset += diff;
- phdr->cbFdOffset += diff;
- phdr->cbRfdOffset += diff;
- phdr->cbExtOffset += diff;
- }
+ phdr->cbLineOffset += diff;
+ phdr->cbDnOffset += diff;
+ phdr->cbPdOffset += diff;
+ phdr->cbSymOffset += diff;
+ phdr->cbOptOffset += diff;
+ phdr->cbAuxOffset += diff;
+ phdr->cbSsOffset += diff;
+ phdr->cbSsExtOffset += diff;
+ phdr->cbFdOffset += diff;
+ phdr->cbRfdOffset += diff;
+ phdr->cbExtOffset += diff;
}
-#endif /* _SYSTYPE_SYSV */
+#endif /* __alpha__ || _SYSTYPE_SYSV */
#if __sgi
/* Adjust the HDRR offsets in .mdebug and copy the
@@ -1111,7 +1081,8 @@ temacs:
the ld bug that gets the line table in a hole in the
elf file rather than in the .mdebug section proper.
David Anderson. davea(a)sgi.com Jan 16,1994. */
- if (n == old_mdebug_index)
+ if (strcmp (old_section_names + new_shdr->sh_name, ".mdebug") == 0
+ && new_shdr->sh_offset - old_shdr->sh_offset != 0)
{
#define MDEBUGADJUST(__ct,__fileaddr) \
if (n_phdrr->__ct > 0) \
@@ -1121,7 +1092,7 @@ temacs:
HDRR *o_phdrr = (HDRR *) ((byte *) old_base + old_shdr->sh_offset);
HDRR *n_phdrr = (HDRR *) ((byte *) new_base + new_shdr->sh_offset);
- unsigned movement = new_data2_size;
+ ptrdiff_t movement = new_shdr->sh_offset - old_shdr->sh_offset;
MDEBUGADJUST (idnMax, cbDnOffset);
MDEBUGADJUST (ipdMax, cbPdOffset);
@@ -1137,22 +1108,13 @@ temacs:
requires special handling. */
if (n_phdrr->cbLine > 0)
{
+ n_phdrr->cbLineOffset += movement;
+
if (o_phdrr->cbLineOffset > (old_shdr->sh_offset
+ old_shdr->sh_size))
- {
- /* line data is in a hole in elf. do special copy and adjust
- for this ld mistake.
- */
- n_phdrr->cbLineOffset += movement;
-
- memcpy (n_phdrr->cbLineOffset + new_base,
- o_phdrr->cbLineOffset + old_base, n_phdrr->cbLine);
- }
- else
- {
- /* somehow line data is in .mdebug as it is supposed to be. */
- MDEBUGADJUST (cbLine, cbLineOffset);
- }
+ /* If not covered by section, it hasn't yet been copied. */
+ memcpy (n_phdrr->cbLineOffset + new_base,
+ o_phdrr->cbLineOffset + old_base, n_phdrr->cbLine);
}
}
#endif /* __sgi */
++++++ emacs-24-0013-ELF-unexec-Symbol-table-patching.patch ++++++
>From 2776e4ffe1f4cf965a6b99201097ca7d4ee2f95c Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra(a)gmail.com>
Date: Sun, 8 Nov 2015 09:29:00 -0800
Subject: ELF unexec: Symbol table patching
Emacs should build on ppc64el. A problem with the bss has been fixed.
This upstream patch has been added [4/10]:
ELF unexec: Symbol table patching
No st_shndx value larger than SHN_LORESERVE should be changed.
* unexelf.c (unexec): Don't adjust any st_shndx larger than
SHN_LORESERVE. Error on SHN_XINDEX.
Origin: upstream, commit: 190b968f189cb7d06223bb39045ec9055df67f68
Bug: http://debbugs.gnu.org/20614
Bug-Debian: http://bugs.debian.org/808347
Added-by: Rob Browning <rlb(a)defaultvalue.org>
---
src/unexelf.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/unexelf.c b/src/unexelf.c
index 07c2ebe..010ecd3 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -1119,7 +1119,7 @@ temacs:
}
#endif /* __sgi */
- /* If it is the symbol table, its st_shndx field needs to be patched. */
+ /* Patch st_shndx field of symbol table. */
if (new_shdr->sh_type == SHT_SYMTAB
|| new_shdr->sh_type == SHT_DYNSYM)
{
@@ -1127,9 +1127,10 @@ temacs:
ElfW (Sym) *sym = (ElfW (Sym) *) (new_shdr->sh_offset + new_base);
for (; num--; sym++)
{
- if ((sym->st_shndx == SHN_UNDEF)
- || (sym->st_shndx == SHN_ABS)
- || (sym->st_shndx == SHN_COMMON))
+ if (sym->st_shndx == SHN_XINDEX)
+ fatal ("SHT_SYMTAB_SHNDX unsupported");
+ if (sym->st_shndx == SHN_UNDEF
+ || sym->st_shndx >= SHN_LORESERVE)
continue;
PATCH_INDEX (sym->st_shndx);
++++++ emacs-24-0014-ELF-unexec-_OBJC_-symbols-in-bss-sections.patch ++++++
>From af11708e83ab826202593ab1b9c22601c46a5056 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra(a)gmail.com>
Date: Sun, 8 Nov 2015 09:29:00 -0800
Subject: ELF unexec: _OBJC_ symbols in bss sections
Emacs should build on ppc64el. A problem with the bss has been fixed.
This upstream patch has been added [5/10]:
ELF unexec: _OBJC_ symbols in bss sections
This code assumed that there was only one bss section. Rather than
checking for a particular index, check the section type. Also, handle
the possibility that the section was SHT_NOBITS originally and is
unchanged, in which case no clearing is needed (and sh_offset isn't
necessarily valid, which can lead to a wild memset).
* unexelf.c (unexec): Properly handle _OBJC_ symbols in bss sections.
Origin: upstream, commit: 3ff9fc0e8d738be5004c65c3be314af9aca68148
Bug: http://debbugs.gnu.org/20614
Bug-Debian: http://bugs.debian.org/808347
Added-by: Rob Browning <rlb(a)defaultvalue.org>
---
src/unexelf.c | 31 ++++++++++++++++++-------------
1 file changed, 18 insertions(+), 13 deletions(-)
diff --git a/src/unexelf.c b/src/unexelf.c
index 010ecd3..58f0ad0 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -1177,20 +1177,25 @@ temacs:
"_OBJC_", sizeof ("_OBJC_") - 1) == 0)
{
ElfW (Shdr) *new_shdr = &NEW_SECTION_H (symp->st_shndx);
- ptrdiff_t reladdr = symp->st_value - new_shdr->sh_addr;
- ptrdiff_t newoff = reladdr + new_shdr->sh_offset;
-
- /* "Unpatch" index. */
- nn = symp->st_shndx;
- if (nn > old_bss_index)
- nn--;
- if (nn == old_bss_index)
- memset (new_base + newoff, 0, symp->st_size);
- else
+ if (new_shdr->sh_type != SHT_NOBITS)
{
- ElfW (Shdr) *old_shdr = &OLD_SECTION_H (nn);
- ptrdiff_t oldoff = reladdr + old_shdr->sh_offset;
- memcpy (new_base + newoff, old_base + oldoff, symp->st_size);
+ ElfW (Shdr) *old_shdr;
+ ptrdiff_t reladdr = symp->st_value - new_shdr->sh_addr;
+ ptrdiff_t newoff = reladdr + new_shdr->sh_offset;
+
+ /* "Unpatch" index. */
+ nn = symp->st_shndx;
+ if (nn > old_bss_index)
+ nn--;
+ old_shdr = &OLD_SECTION_H (nn);
+ if (old_shdr->sh_type == SHT_NOBITS)
+ memset (new_base + newoff, 0, symp->st_size);
+ else
+ {
+ ptrdiff_t oldoff = reladdr + old_shdr->sh_offset;
+ memcpy (new_base + newoff, old_base + oldoff,
+ symp->st_size);
+ }
}
}
#endif
++++++ emacs-24-0015-ELF-unexec-R_-_NONE-relocs.patch ++++++
>From f9d91515971443b754b9c9eaac45a293d0e620c1 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra(a)gmail.com>
Date: Sun, 8 Nov 2015 09:29:00 -0800
Subject: ELF unexec: R_*_NONE relocs
Emacs should build on ppc64el. A problem with the bss has been fixed.
This upstream patch has been added [6/10]:
ELF unexec: R_*_NONE relocs
These should be ignored on all targets.
* unexelf.c (unexec): Ignore R_*_NONE relocs for any target,
not just Alpha. Comment on reloc size assumption.
Origin: upstream, commit: 8285c2ab8050de218c0c06182659ee0a7b23a0f6
Bug: http://debbugs.gnu.org/20614
Bug-Debian: http://bugs.debian.org/808347
Added-by: Rob Browning <rlb(a)defaultvalue.org>
---
src/unexelf.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/unexelf.c b/src/unexelf.c
index 58f0ad0..1d9387e 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -1203,7 +1203,7 @@ temacs:
}
/* This loop seeks out relocation sections for the data section, so
- that it can undo relocations performed by the runtime linker. */
+ that it can undo relocations performed by the runtime loader. */
for (n = new_file_h->e_shnum; 0 < --n; )
{
ElfW (Shdr) *rel_shdr = &NEW_SECTION_H (n);
@@ -1236,14 +1236,14 @@ temacs:
reloc += rel_shdr->sh_entsize)
{
ElfW (Addr) addr = ((ElfW (Rel) *) reloc)->r_offset - offset;
-#ifdef __alpha__
- /* The Alpha ELF binutils currently have a bug that
- sometimes results in relocs that contain all
- zeroes. Work around this for now... */
+ /* Ignore R_*_NONE relocs. */
if (((ElfW (Rel) *) reloc)->r_offset == 0)
continue;
-#endif
- memcpy (new_base + addr, old_base + addr, sizeof (ElfW (Addr)));
+ /* Assume reloc applies to a word.
+ ??? This is not always true, eg. TLS module/index
+ pair in .got which occupies two words. */
+ memcpy (new_base + addr, old_base + addr,
+ sizeof (ElfW (Addr)));
}
}
break;
++++++ emacs-24-0016-ELF-unexec-Drive-from-PT_LOAD-header-rather-than-sec.patch ++++++
>From 75dc7e12d73ad8c1bf9583515e41913980883dbe Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra(a)gmail.com>
Date: Sun, 8 Nov 2015 09:29:00 -0800
Subject: ELF unexec: Drive from PT_LOAD header rather than sections
Emacs should build on ppc64el. A problem with the bss has been fixed.
This upstream patch has been added [7/10]:
ELF unexec: Drive from PT_LOAD header rather than sections
This rewrites bss handling in the ELF unexec code. Finding bss
sections by name results in complicated code that
- does not account for all names of possible bss sections,
- assumes specific ordering of bss sections,
- can wrongly choose a SHT_NOBITS section not in the bss segment,
- incorrectly calculates bss size (no accounting for alignment gaps),
- assumes .data and .bss are in the same segment.
All of these problems and more are solved by finding the bss segment
in PT_LOAD headers, ie. the address range included in p_memsz but not
p_filesz of the last PT_LOAD header, then matching SHT_NOBITS sections
in that address range.
* unexelf.c: Delete old ppc comment.
(OLD_PROGRAM_H): Define.
(round_up): Delete.
(unexec): Don't search for bss style sections by name. Instead,
use the last PT_LOAD header address range covered by p_memsz
but not p_filesz and match any SHT_NOBITS section in that
address range. Simplify initialisation of section header vars.
Don't assume that section headers are above bss segment. Move
copying of bss area out of section loop. Align .data2 section
to 1, since it now covers the entire bss area. For SHT_NOBITS
sections in the bss segment, leave sh_addr and sh_addralign
unchanged, but correct sh_offset. Clear memory corresponding
to SHT_NOBITS .plt section. Delete comment and hacks for
sections partly overlapping bss range now that the full range
is properly calculated. Delete now dead .sbss code.
(Bug#20614)
Origin: upstream, commit: 0d6442265e5b709af5eebedf8f0d6b82974f4c31
Bug: http://debbugs.gnu.org/20614
Bug-Debian: http://bugs.debian.org/808347
Added-by: Rob Browning <rlb(a)defaultvalue.org>
---
src/unexelf.c | 290 ++++++++++++++++------------------------------------------
1 file changed, 77 insertions(+), 213 deletions(-)
diff --git a/src/unexelf.c b/src/unexelf.c
index 1d9387e..c659f3e 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -535,29 +535,6 @@ verify ((! TYPE_SIGNED (ElfW (Half))
/* Get the address of a particular section or program header entry,
* accounting for the size of the entries.
*/
-/*
- On PPC Reference Platform running Solaris 2.5.1
- the plt section is also of type NOBI like the bss section.
- (not really stored) and therefore sections after the bss
- section start at the plt offset. The plt section is always
- the one just before the bss section.
- Thus, we modify the test from
- if (NEW_SECTION_H (nn).sh_offset >= new_data2_offset)
- to
- if (NEW_SECTION_H (nn).sh_offset >=
- OLD_SECTION_H (old_bss_index-1).sh_offset)
- This is just a hack. We should put the new data section
- before the .plt section.
- And we should not have this routine at all but use
- the libelf library to read the old file and create the new
- file.
- The changed code is minimal and depends on prep set in m/prep.h
- Erik Deumens
- Quantum Theory Project
- University of Florida
- deumens(a)qtp.ufl.edu
- Apr 23, 1996
- */
static void *
entry_address (void *section_h, ptrdiff_t idx, ptrdiff_t entsize)
@@ -570,23 +547,14 @@ entry_address (void *section_h, ptrdiff_t idx, ptrdiff_t entsize)
(*(ElfW (Shdr) *) entry_address (old_section_h, n, old_file_h->e_shentsize))
#define NEW_SECTION_H(n) \
(*(ElfW (Shdr) *) entry_address (new_section_h, n, new_file_h->e_shentsize))
+#define OLD_PROGRAM_H(n) \
+ (*(ElfW (Phdr) *) entry_address (old_program_h, n, old_file_h->e_phentsize))
#define NEW_PROGRAM_H(n) \
(*(ElfW (Phdr) *) entry_address (new_program_h, n, new_file_h->e_phentsize))
#define PATCH_INDEX(n) ((n) += old_bss_index <= (n))
typedef unsigned char byte;
-/* Round X up to a multiple of Y. */
-
-static ElfW (Addr)
-round_up (ElfW (Addr) x, ElfW (Addr) y)
-{
- ElfW (Addr) rem = x % y;
- if (rem == 0)
- return x;
- return x - rem + y;
-}
-
/* Return the index of the section named NAME.
SECTION_NAMES, FILE_NAME and FILE_H give information
about the file we are looking in.
@@ -650,16 +618,15 @@ unexec (const char *new_name, const char *old_name)
/* Point to the section name table in the old file. */
char *old_section_names;
+ ElfW (Phdr) *old_bss_seg, *new_bss_seg;
ElfW (Addr) old_bss_addr, new_bss_addr;
ElfW (Word) old_bss_size, new_data2_size;
ElfW (Off) new_data2_offset;
ElfW (Addr) new_data2_addr;
ElfW (Off) old_bss_offset;
- ElfW (Word) new_data2_incr;
ptrdiff_t n, nn;
- ptrdiff_t old_bss_index, old_sbss_index, old_plt_index;
- ptrdiff_t old_data_index, new_data2_index;
+ ptrdiff_t old_bss_index, old_data_index;
struct stat stat_buf;
off_t old_file_size;
int mask;
@@ -704,54 +671,40 @@ unexec (const char *new_name, const char *old_name)
old_section_names = (char *) old_base
+ OLD_SECTION_H (old_file_h->e_shstrndx).sh_offset;
- /* Find the old .bss section. Figure out parameters of the new
- data2 and bss sections. */
-
- old_bss_index = find_section (".bss", old_section_names,
- old_name, old_file_h, old_section_h, 0);
-
- old_sbss_index = find_section (".sbss", old_section_names,
- old_name, old_file_h, old_section_h, 1);
- if (old_sbss_index != -1)
- if (OLD_SECTION_H (old_sbss_index).sh_type != SHT_NOBITS)
- old_sbss_index = -1;
-
- /* PowerPC64 has .plt in the BSS section. */
- old_plt_index = find_section (".plt", old_section_names,
- old_name, old_file_h, old_section_h, 1);
- if (old_plt_index != -1)
- if (OLD_SECTION_H (old_plt_index).sh_type != SHT_NOBITS)
- old_plt_index = -1;
-
- if (old_sbss_index == -1 && old_plt_index == -1)
- {
- old_bss_addr = OLD_SECTION_H (old_bss_index).sh_addr;
- old_bss_size = OLD_SECTION_H (old_bss_index).sh_size;
- old_bss_offset = OLD_SECTION_H (old_bss_index).sh_offset;
- new_data2_index = old_bss_index;
- }
- else if (old_plt_index != -1
- && (old_sbss_index == -1
- || (OLD_SECTION_H (old_sbss_index).sh_addr
- > OLD_SECTION_H (old_plt_index).sh_addr)))
+ /* Find the PT_LOAD header covering the highest address. This
+ segment will be where bss sections are located, past p_filesz. */
+ old_bss_seg = 0;
+ for (n = old_file_h->e_phnum; --n >= 0; )
{
- old_bss_addr = OLD_SECTION_H (old_plt_index).sh_addr;
- old_bss_size = OLD_SECTION_H (old_bss_index).sh_size
- + OLD_SECTION_H (old_plt_index).sh_size;
- if (old_sbss_index != -1)
- old_bss_size += OLD_SECTION_H (old_sbss_index).sh_size;
- old_bss_offset = OLD_SECTION_H (old_plt_index).sh_offset;
- new_data2_index = old_plt_index;
+ ElfW (Phdr) *seg = &OLD_PROGRAM_H (n);
+ if (seg->p_type == PT_LOAD
+ && (old_bss_seg == 0
+ || seg->p_vaddr > old_bss_seg->p_vaddr))
+ old_bss_seg = seg;
}
- else
+
+ /* Note that old_bss_addr may be lower than the first bss section
+ address, since the section may need aligning. */
+ old_bss_addr = old_bss_seg->p_vaddr + old_bss_seg->p_filesz;
+ old_bss_offset = old_bss_seg->p_offset + old_bss_seg->p_filesz;
+ old_bss_size = old_bss_seg->p_memsz - old_bss_seg->p_filesz;
+
+ /* Find the first bss style section in the bss segment range. */
+ old_bss_index = -1;
+ for (n = old_file_h->e_shnum; --n > 0; )
{
- old_bss_addr = OLD_SECTION_H (old_sbss_index).sh_addr;
- old_bss_size = OLD_SECTION_H (old_bss_index).sh_size
- + OLD_SECTION_H (old_sbss_index).sh_size;
- old_bss_offset = OLD_SECTION_H (old_sbss_index).sh_offset;
- new_data2_index = old_sbss_index;
+ ElfW (Shdr) *shdr = &OLD_SECTION_H (n);
+ if (shdr->sh_type == SHT_NOBITS
+ && shdr->sh_addr >= old_bss_addr
+ && shdr->sh_addr + shdr->sh_size <= old_bss_addr + old_bss_size
+ && (old_bss_index == -1
+ || OLD_SECTION_H (old_bss_index).sh_addr > shdr->sh_addr))
+ old_bss_index = n;
}
+ if (old_bss_index == -1)
+ fatal ("no bss section found");
+
/* Find the old .data section. Figure out parameters of
the new data2 and bss sections. */
@@ -762,13 +715,7 @@ unexec (const char *new_name, const char *old_name)
new_bss_addr = (ElfW (Addr)) new_break;
new_data2_addr = old_bss_addr;
new_data2_size = new_bss_addr - old_bss_addr;
- new_data2_offset = OLD_SECTION_H (old_data_index).sh_offset
- + (new_data2_addr - OLD_SECTION_H (old_data_index).sh_addr);
- /* This is the amount by which the sections following the bss sections
- must be shifted in the image. It can differ from new_data2_size if
- the end of the old .data section (and thus the offset of the .bss
- section) was unaligned. */
- new_data2_incr = new_data2_size + (new_data2_offset - old_bss_offset);
+ new_data2_offset = old_bss_offset;
#ifdef UNEXELF_DEBUG
fprintf (stderr, "old_bss_index %td\n", old_bss_index);
@@ -779,7 +726,6 @@ unexec (const char *new_name, const char *old_name)
DEBUG_LOG (new_data2_addr);
DEBUG_LOG (new_data2_size);
DEBUG_LOG (new_data2_offset);
- DEBUG_LOG (new_data2_incr);
#endif
if (new_bss_addr < old_bss_addr + old_bss_size)
@@ -793,7 +739,7 @@ unexec (const char *new_name, const char *old_name)
if (new_file < 0)
fatal ("Can't creat (%s): %s", new_name, strerror (errno));
- new_file_size = old_file_size + old_file_h->e_shentsize + new_data2_incr;
+ new_file_size = old_file_size + old_file_h->e_shentsize + new_data2_size;
if (ftruncate (new_file, new_file_size))
fatal ("Can't ftruncate (%s): %s", new_name, strerror (errno));
@@ -812,15 +758,15 @@ unexec (const char *new_name, const char *old_name)
/* Fix up file header. We'll add one section. Section header is
further away now. */
- new_file_h->e_shoff += new_data2_incr;
+ if (new_file_h->e_shoff >= old_bss_offset)
+ new_file_h->e_shoff += new_data2_size;
new_file_h->e_shnum += 1;
/* Modify the e_shstrndx if necessary. */
PATCH_INDEX (new_file_h->e_shstrndx);
- new_program_h = (ElfW (Phdr) *) ((byte *) new_base + old_file_h->e_phoff);
- new_section_h = (ElfW (Shdr) *)
- ((byte *) new_base + old_file_h->e_shoff + new_data2_incr);
+ new_program_h = (ElfW (Phdr) *) ((byte *) new_base + new_file_h->e_phoff);
+ new_section_h = (ElfW (Shdr) *) ((byte *) new_base + new_file_h->e_shoff);
memcpy (new_program_h, old_program_h,
old_file_h->e_phnum * old_file_h->e_phentsize);
@@ -832,65 +778,21 @@ unexec (const char *new_name, const char *old_name)
fprintf (stderr, "New section count %td\n", (ptrdiff_t) new_file_h->e_shnum);
#endif
- /* Fix up a new program header. Extend the writable data segment so
- that the bss area is covered too. Find that segment by looking
- for a segment that ends just before the .bss area. Make sure
- that no segments are above the new .data2. Put a loop at the end
- to adjust the offset and address of any segment that is above
- data2, just in case we decide to allow this later. */
+ /* Fix up program header. Extend the writable data segment so
+ that the bss area is covered too. */
- for (n = new_file_h->e_phnum; --n >= 0; )
- {
- /* Compute maximum of all requirements for alignment of section. */
- ElfW (Word) alignment = (NEW_PROGRAM_H (n)).p_align;
- if ((OLD_SECTION_H (old_bss_index)).sh_addralign > alignment)
- alignment = OLD_SECTION_H (old_bss_index).sh_addralign;
-
-#ifdef __sgi
- /* According to r02kar(a)x4u2.desy.de (Karsten Kuenne)
- and oliva(a)gnu.org (Alexandre Oliva), on IRIX 5.2, we
- always get "Program segment above .bss" when dumping
- when the executable doesn't have an sbss section. */
- if (old_sbss_index != -1)
-#endif /* __sgi */
- if (NEW_PROGRAM_H (n).p_vaddr + NEW_PROGRAM_H (n).p_filesz
- > (old_sbss_index == -1
- ? old_bss_addr
- : round_up (old_bss_addr, alignment)))
- fatal ("Program segment above .bss in %s", old_name);
-
- if (NEW_PROGRAM_H (n).p_type == PT_LOAD
- && (round_up ((NEW_PROGRAM_H (n)).p_vaddr
- + (NEW_PROGRAM_H (n)).p_filesz,
- alignment)
- == round_up (old_bss_addr, alignment)))
- break;
- }
- if (n < 0)
- fatal ("Couldn't find segment next to .bss in %s", old_name);
-
- /* Make sure that the size includes any padding before the old .bss
- section. */
- NEW_PROGRAM_H (n).p_filesz = new_bss_addr - NEW_PROGRAM_H (n).p_vaddr;
- NEW_PROGRAM_H (n).p_memsz = NEW_PROGRAM_H (n).p_filesz;
-
-#if 0 /* Maybe allow section after data2 - does this ever happen? */
- for (n = new_file_h->e_phnum; --n >= 0; )
- {
- if (NEW_PROGRAM_H (n).p_vaddr
- && NEW_PROGRAM_H (n).p_vaddr >= new_data2_addr)
- NEW_PROGRAM_H (n).p_vaddr += new_data2_size - old_bss_size;
+ new_bss_seg = new_program_h + (old_bss_seg - old_program_h);
+ new_bss_seg->p_filesz = new_bss_addr - new_bss_seg->p_vaddr;
+ new_bss_seg->p_memsz = new_bss_seg->p_filesz;
- if (NEW_PROGRAM_H (n).p_offset >= new_data2_offset)
- NEW_PROGRAM_H (n).p_offset += new_data2_incr;
- }
-#endif
+ /* Copy over what we have in memory now for the bss area. */
+ memcpy (new_base + new_data2_offset, (caddr_t) old_bss_addr, new_data2_size);
/* Fix up section headers based on new .data2 section. Any section
whose offset or virtual address is after the new .data2 section
- gets its value adjusted. .bss size becomes zero and new address
- is set. data2 section header gets added by copying the existing
- .data header and modifying the offset, address and size. */
+ gets its value adjusted. .bss size becomes zero. data2 section
+ header gets added by copying the existing .data header and
+ modifying the offset, address and size. */
/* Walk through all section headers, insert the new data2 section right
before the new bss section. */
@@ -901,9 +803,7 @@ unexec (const char *new_name, const char *old_name)
ElfW (Shdr) *new_shdr = &NEW_SECTION_H (nn);
/* If it is (s)bss section, insert the new data2 section before it. */
- /* new_data2_index is the index of either old_sbss or old_bss, that was
- chosen as a section for new_data2. */
- if (n == new_data2_index)
+ if (n == old_bss_index)
{
/* Steal the data section header for this data2 section. */
memcpy (new_shdr, &OLD_SECTION_H (old_data_index),
@@ -912,68 +812,43 @@ unexec (const char *new_name, const char *old_name)
new_shdr->sh_addr = new_data2_addr;
new_shdr->sh_offset = new_data2_offset;
new_shdr->sh_size = new_data2_size;
- /* Use the bss section's alignment. This will assure that the
- new data2 section always be placed in the same spot as the old
- bss section by any other application. */
- new_shdr->sh_addralign = old_shdr->sh_addralign;
-
- /* Now copy over what we have in the memory now. */
- memcpy (new_shdr->sh_offset + new_base,
- (caddr_t) old_shdr->sh_addr,
- new_data2_size);
+ new_shdr->sh_addralign = 1;
nn++;
new_shdr++;
}
memcpy (new_shdr, old_shdr, old_file_h->e_shentsize);
- if (n == old_bss_index
- /* The new bss and sbss section's size is zero, and its file offset
- and virtual address should be off by NEW_DATA2_SIZE. */
- || n == old_sbss_index || n == old_plt_index
- )
+ if (new_shdr->sh_type == SHT_NOBITS
+ && new_shdr->sh_addr >= old_bss_addr
+ && (new_shdr->sh_addr + new_shdr->sh_size
+ <= old_bss_addr + old_bss_size))
{
- /* NN should be `old_s?bss_index + 1' at this point. */
- new_shdr->sh_offset = new_data2_offset + new_data2_size;
- new_shdr->sh_addr = new_data2_addr + new_data2_size;
- /* Let the new bss section address alignment be the same as the
- section address alignment followed the old bss section, so
- this section will be placed in exactly the same place. */
- new_shdr->sh_addralign = OLD_SECTION_H (nn).sh_addralign;
+ /* SHT_NOBITS sections do not need a valid sh_offset, so it
+ might be incorrect. Write the correct value. */
+ new_shdr->sh_offset = (new_shdr->sh_addr - new_bss_seg->p_vaddr
+ + new_bss_seg->p_offset);
+
+ /* If this is was a SHT_NOBITS .plt section, then it is
+ probably a PowerPC PLT. If it is PowerPC64 ELFv1 then
+ glibc ld.so doesn't initialize the toc pointer word. A
+ non-zero toc pointer word can defeat Power7 thread safety
+ during lazy update of a PLT entry. This only matters if
+ emacs becomes multi-threaded. */
+ if (strcmp (old_section_names + new_shdr->sh_name, ".plt") == 0)
+ memset (new_shdr->sh_offset + new_base, 0, new_shdr->sh_size);
+
+ /* Set the new bss and sbss section's size to zero, because
+ we've already covered this address range by .data2. */
new_shdr->sh_size = 0;
}
else
{
/* Any section that was originally placed after the .bss
- section should now be off by NEW_DATA2_INCR. If a
- section overlaps the .bss section, consider it to be
- placed after the .bss section. Overlap can occur if the
- section just before .bss has less-strict alignment; this
- was observed between .symtab and .bss on Solaris 2.5.1
- (sparc) with GCC snapshot 960602.
+ section should now be off by NEW_DATA2_SIZE. */
-> dump -h temacs
-
-temacs:
-
- **** SECTION HEADER TABLE ****
-[No] Type Flags Addr Offset Size Name
- Link Info Adralgn Entsize
-
-[22] 1 3 0x335150 0x315150 0x4 .data.rel.local
- 0 0 0x4 0
-
-[23] 8 3 0x335158 0x315158 0x42720 .bss
- 0 0 0x8 0
-
-[24] 2 0 0 0x315154 0x1c9d0 .symtab
- 25 1709 0x4 0x10
- */
-
- if (new_shdr->sh_offset >= old_bss_offset
- || (new_shdr->sh_offset + new_shdr->sh_size
- > new_data2_offset))
- new_shdr->sh_offset += new_data2_incr;
+ if (new_shdr->sh_offset >= old_bss_offset)
+ new_shdr->sh_offset += new_data2_size;
/* Any section that was originally placed after the section
header table should now be off by the size of one section
@@ -993,23 +868,13 @@ temacs:
&& new_shdr->sh_type != SHT_DYNSYM)
PATCH_INDEX (new_shdr->sh_info);
- if (old_sbss_index != -1)
- if (!strcmp (old_section_names + new_shdr->sh_name, ".sbss"))
- {
- new_shdr->sh_offset =
- round_up (new_shdr->sh_offset,
- new_shdr->sh_addralign);
- new_shdr->sh_type = SHT_PROGBITS;
- }
-
/* Now, start to copy the content of sections. */
if (new_shdr->sh_type == SHT_NULL
|| new_shdr->sh_type == SHT_NOBITS)
continue;
- /* Write out the sections. .data and .data1 (and data2, called
- ".data" in the strings table) get copied from the current process
- instead of the old file. */
+ /* Some sections are copied from the current process instead of
+ the old file. */
if (!strcmp (old_section_names + new_shdr->sh_name, ".data")
|| !strcmp (old_section_names + new_shdr->sh_name, ".sdata")
|| !strcmp (old_section_names + new_shdr->sh_name, ".lit4")
@@ -1038,8 +903,7 @@ temacs:
|| !strcmp (old_section_names + new_shdr->sh_name, ".got")
#endif
|| !strcmp (old_section_names + new_shdr->sh_name, ".sdata1")
- || !strcmp (old_section_names + new_shdr->sh_name, ".data1")
- || !strcmp (old_section_names + new_shdr->sh_name, ".sbss"))
+ || !strcmp (old_section_names + new_shdr->sh_name, ".data1"))
src = (caddr_t) old_shdr->sh_addr;
else
src = old_base + old_shdr->sh_offset;
++++++ emacs-24-0017-ELF-unexec-Don-t-insert-a-new-section.patch ++++++
++++ 705 lines (skipped)
++++++ emacs-24-0018-src-unexelf.c-NEW_PROGRAM_H-Remove-unused-macro-Bug-.patch ++++++
>From 9b52726df50cc9b4fdfce2ed1dc114311dc60a93 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert(a)cs.ucla.edu>
Date: Sun, 8 Nov 2015 09:36:14 -0800
Subject: * src/unexelf.c (NEW_PROGRAM_H): Remove unused macro (Bug#20614).
Emacs should build on ppc64el. A problem with the bss has been fixed.
This upstream patch has been added [9/10]:
* src/unexelf.c (NEW_PROGRAM_H): Remove unused macro (Bug#20614).
Origin: upstream, commit: 2ce0c0674eba9179ba57c537e387bc3f7b0e5b63
Bug: http://debbugs.gnu.org/20614
Bug-Debian: http://bugs.debian.org/808347
Added-by: Rob Browning <rlb(a)defaultvalue.org>
---
src/unexelf.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/unexelf.c b/src/unexelf.c
index 9279c76..f2462d1 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -208,8 +208,6 @@ entry_address (void *section_h, ptrdiff_t idx, ptrdiff_t entsize)
(*(ElfW (Shdr) *) entry_address (new_section_h, n, new_file_h->e_shentsize))
#define OLD_PROGRAM_H(n) \
(*(ElfW (Phdr) *) entry_address (old_program_h, n, old_file_h->e_phentsize))
-#define NEW_PROGRAM_H(n) \
- (*(ElfW (Phdr) *) entry_address (new_program_h, n, new_file_h->e_phentsize))
typedef unsigned char byte;
@@ -250,7 +248,7 @@ unexec (const char *new_name, const char *old_name)
ElfW (Phdr) *old_bss_seg, *new_bss_seg;
ElfW (Addr) old_bss_addr, new_bss_addr;
ElfW (Word) old_bss_size, new_data2_size;
- ElfW (Off) old_bss_offset, new_data2_offset;
+ ElfW (Off) old_bss_offset, new_data2_offset;
ptrdiff_t n;
ptrdiff_t old_bss_index;
++++++ emacs-24-0019-ELF-unexec-align-section-header.patch ++++++
>From 0de7316751e94c29aeb4b75731ac6e8c9eba77e6 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert(a)cs.ucla.edu>
Date: Mon, 16 Nov 2015 17:48:08 -0800
Subject: ELF unexec: align section header
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Emacs should build on ppc64el. A problem with the bss has been fixed.
This upstream patch has been added [10/10]:
ELF unexec: align section header
This ports the recent unexelf.c changes to Fedora x86-64
when configured with GCC’s -fsanitize=undefined option.
* src/unexelf.c (unexec): Align new_data2_size to a multiple
of ElfW (Shdr)’s alignment, so that NEW_SECTION_H returns a
pointer aligned appropriately for its type.
Origin: upstream, commit: c9fd597a4cffcae873b25381ee8cc755f0debe95
Bug: http://debbugs.gnu.org/20614
Bug-Debian: http://bugs.debian.org/808347
Added-by: Rob Browning <rlb(a)defaultvalue.org>
---
src/unexelf.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/unexelf.c b/src/unexelf.c
index f2462d1..c69be0d 100644
--- a/src/unexelf.c
+++ b/src/unexelf.c
@@ -247,7 +247,7 @@ unexec (const char *new_name, const char *old_name)
ElfW (Phdr) *old_bss_seg, *new_bss_seg;
ElfW (Addr) old_bss_addr, new_bss_addr;
- ElfW (Word) old_bss_size, new_data2_size;
+ ElfW (Word) old_bss_size, bss_size_growth, new_data2_size;
ElfW (Off) old_bss_offset, new_data2_offset;
ptrdiff_t n;
@@ -332,7 +332,11 @@ unexec (const char *new_name, const char *old_name)
new_break = sbrk (0);
new_bss_addr = (ElfW (Addr)) new_break;
- new_data2_size = new_bss_addr - old_bss_addr;
+ bss_size_growth = new_bss_addr - old_bss_addr;
+ new_data2_size = bss_size_growth;
+ new_data2_size += alignof (ElfW (Shdr)) - 1;
+ new_data2_size -= new_data2_size % alignof (ElfW (Shdr));
+
new_data2_offset = old_bss_offset;
#ifdef UNEXELF_DEBUG
@@ -400,7 +404,8 @@ unexec (const char *new_name, const char *old_name)
new_bss_seg->p_memsz = new_bss_seg->p_filesz;
/* Copy over what we have in memory now for the bss area. */
- memcpy (new_base + new_data2_offset, (caddr_t) old_bss_addr, new_data2_size);
+ memcpy (new_base + new_data2_offset, (caddr_t) old_bss_addr,
+ bss_size_growth);
/* Walk through all section headers, copying data and updating. */
for (n = 1; n < old_file_h->e_shnum; n++)
1
0
Hello community,
here is the log from the commit of package ed for openSUSE:Factory checked in at 2016-02-28 02:25:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ed (Old)
and /work/SRC/openSUSE:Factory/.ed.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ed"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ed/ed.changes 2015-07-21 13:24:43.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ed.new/ed.changes 2016-02-28 02:25:08.000000000 +0100
@@ -1,0 +2,7 @@
+Fri Feb 12 17:51:01 UTC 2016 - mpluskal(a)suse.com
+
+- Update to 1.13
+ * buffer.c (put_sbuf_line): Fixed a memory leak.
+ * io.c (read_file, write_file): Close file on error.
+
+-------------------------------------------------------------------
Old:
----
ed-1.12.tar.xz
New:
----
ed-1.13.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ed.spec ++++++
--- /var/tmp/diff_new_pack.Opacoz/_old 2016-02-28 02:25:09.000000000 +0100
+++ /var/tmp/diff_new_pack.Opacoz/_new 2016-02-28 02:25:09.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ed
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: ed
-Version: 1.12
+Version: 1.13
Release: 0
Summary: GNU ed is a line-oriented text editor
License: GPL-3.0+ and LGPL-2.1+
@@ -50,7 +50,7 @@
make %{?_smp_mflags}
%install
-make DESTDIR=%{buildroot} install %{?_smp_mflags}
+make %{?_smp_mflags} DESTDIR=%{buildroot} install
#UsrMerge
install -d -m 0755 %{buildroot}/bin
ln -s %{_bindir}/ed %{buildroot}/bin/ed
@@ -59,20 +59,20 @@
%check
make %{?_smp_mflags} check
+%post
+%install_info --entry="* ed: (ed). Line-oriented text editor" --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
+
+%preun
+%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
+
%files
%defattr(-,root,root)
%doc AUTHORS ChangeLog COPYING NEWS README TODO
/bin/%{name}
%{_bindir}/%{name}
%{_bindir}/r%{name}
-%doc %{_infodir}/%{name}.info.gz
-%doc %{_mandir}/man1/%{name}.1.gz
-%doc %{_mandir}/man1/r%{name}.1.gz
-
-%post
-%install_info --entry="* ed: (ed). Line-oriented text editor" --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
-
-%preun
-%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
+%{_infodir}/%{name}.info.*
+%{_mandir}/man1/%{name}.1%{ext_man}
+%{_mandir}/man1/r%{name}.1%{ext_man}
%changelog
++++++ ed-1.12.tar.xz -> ed-1.13.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/ChangeLog new/ed-1.13/ChangeLog
--- old/ed-1.12/ChangeLog 2015-07-04 12:40:58.000000000 +0200
+++ new/ed-1.13/ChangeLog 2016-01-24 18:54:47.000000000 +0100
@@ -1,3 +1,10 @@
+2016-01-24 Antonio Diaz Diaz <antonio(a)gnu.org>
+
+ * Version 1.13 released.
+ * buffer.c (put_sbuf_line): Fixed a memory leak.
+ * io.c (read_file, write_file): Close file on error.
+ (Both issues reported by Cédric Picard).
+
2015-07-04 Antonio Diaz Diaz <antonio(a)gnu.org>
* Version 1.12 released.
@@ -22,7 +29,7 @@
2013-06-18 Antonio Diaz Diaz <antonio(a)gnu.org>
* Version 1.9 released.
- * check.sh: Do not feed shell scripts to ed.
+ * check.sh: Don't feed shell scripts to ed.
* configure: Options now accept a separate argument.
2013-04-23 Antonio Diaz Diaz <antonio(a)gnu.org>
@@ -224,7 +231,7 @@
Copyright (C) 1993 François Pinard
Copyright (C) 1994 Andrew Moore
-Copyright (C) 2006-2015 Antonio Diaz Diaz.
+Copyright (C) 2006-2016 Antonio Diaz Diaz.
This file is a collection of facts, and thus it is not copyrightable,
but just in case, you have unlimited permission to copy, distribute and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/INSTALL new/ed-1.13/INSTALL
--- old/ed-1.12/INSTALL 2015-04-17 13:38:54.000000000 +0200
+++ new/ed-1.13/INSTALL 2016-01-24 18:54:47.000000000 +0100
@@ -58,7 +58,7 @@
explained above.
-Copyright (C) 2006-2015 Antonio Diaz Diaz.
+Copyright (C) 2006-2016 Antonio Diaz Diaz.
This file is free documentation: you have unlimited permission to copy,
distribute and modify it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/NEWS new/ed-1.13/NEWS
--- old/ed-1.12/NEWS 2015-07-04 12:40:58.000000000 +0200
+++ new/ed-1.13/NEWS 2015-07-20 12:08:00.000000000 +0200
@@ -1,6 +1,4 @@
-Changes in version 1.12:
+Changes in version 1.13:
-Extra spaces have been removed from the synopses of some commands in the
-manual.
-
-Minor documentation fixes.
+A memory leak and a resource leak (file not closed on error) have been
+fixed. (Both issues were reported by Cédric Picard).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/README new/ed-1.13/README
--- old/ed-1.12/README 2015-01-11 19:43:16.000000000 +0100
+++ new/ed-1.13/README 2016-01-24 18:54:47.000000000 +0100
@@ -136,7 +136,7 @@
Copyright (C) 1993, 1994 Andrew Moore
-Copyright (C) 2006-2015 Antonio Diaz Diaz.
+Copyright (C) 2006-2016 Antonio Diaz Diaz.
This file is free documentation: you have unlimited permission to copy,
distribute and modify it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/buffer.c new/ed-1.13/buffer.c
--- old/ed-1.12/buffer.c 2015-06-07 19:10:25.000000000 +0200
+++ new/ed-1.13/buffer.c 2016-01-24 18:54:47.000000000 +0100
@@ -1,7 +1,7 @@
/* buffer.c: scratch-file buffer routines for the ed line editor. */
/* GNU ed - The GNU line editor.
Copyright (C) 1993, 1994 Andrew Moore, Talke Studio
- Copyright (C) 2006-2015 Antonio Diaz Diaz.
+ Copyright (C) 2006-2016 Antonio Diaz Diaz.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -439,11 +439,10 @@
const char * put_sbuf_line( const char * const buf, const int size,
const int addr )
{
- line_t * const lp = dup_line_node( 0 );
const char * const p = (const char *) memchr( buf, '\n', size );
+ line_t * lp;
int len;
- if( !lp ) return 0;
if( !p ) { set_error_msg( "Line too long" ); return 0; }
len = p - buf;
/* out of position */
@@ -465,6 +464,8 @@
set_error_msg( "Cannot write temp file" );
return 0;
}
+ lp = dup_line_node( 0 );
+ if( !lp ) return 0;
lp->pos = sfpos; lp->len = len;
add_line_node( lp, addr );
++current_addr_;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/carg_parser.c new/ed-1.13/carg_parser.c
--- old/ed-1.12/carg_parser.c 2015-04-09 16:46:31.000000000 +0200
+++ new/ed-1.13/carg_parser.c 2016-01-15 17:56:32.000000000 +0100
@@ -1,5 +1,5 @@
/* Arg_parser - POSIX/GNU command line argument parser. (C version)
- Copyright (C) 2006-2015 Antonio Diaz Diaz.
+ Copyright (C) 2006-2016 Antonio Diaz Diaz.
This library is free software. Redistribution and use in source and
binary forms, with or without modification, are permitted provided
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/carg_parser.h new/ed-1.13/carg_parser.h
--- old/ed-1.12/carg_parser.h 2015-04-09 16:46:31.000000000 +0200
+++ new/ed-1.13/carg_parser.h 2016-01-15 17:56:32.000000000 +0100
@@ -1,5 +1,5 @@
/* Arg_parser - POSIX/GNU command line argument parser. (C version)
- Copyright (C) 2006-2015 Antonio Diaz Diaz.
+ Copyright (C) 2006-2016 Antonio Diaz Diaz.
This library is free software. Redistribution and use in source and
binary forms, with or without modification, are permitted provided
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/configure new/ed-1.13/configure
--- old/ed-1.12/configure 2015-07-04 12:40:58.000000000 +0200
+++ new/ed-1.13/configure 2016-01-24 18:54:47.000000000 +0100
@@ -1,12 +1,12 @@
#! /bin/sh
# configure script for GNU ed - The GNU line editor
-# Copyright (C) 2006-2015 Antonio Diaz Diaz.
+# Copyright (C) 2006-2016 Antonio Diaz Diaz.
#
# This configure script is free software: you have unlimited permission
# to copy, distribute and modify it.
pkgname=ed
-pkgversion=1.12
+pkgversion=1.13
progname=ed
srctrigger=doc/${pkgname}.texi
@@ -143,7 +143,7 @@
rm -f config.status
cat > config.status << EOF
#! /bin/sh
-# This file was generated automatically by configure. Do not edit.
+# This file was generated automatically by configure. Don't edit.
# Run this file to recreate the current configuration.
#
# This script is free software: you have unlimited permission
@@ -170,8 +170,8 @@
rm -f Makefile
cat > Makefile << EOF
# Makefile for GNU ed - The GNU line editor
-# Copyright (C) 2006-2015 Antonio Diaz Diaz.
-# This file was generated automatically by configure. Do not edit.
+# Copyright (C) 2006-2016 Antonio Diaz Diaz.
+# This file was generated automatically by configure. Don't edit.
#
# This Makefile is free software: you have unlimited permission
# to copy, distribute and modify it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/doc/ed.1 new/ed-1.13/doc/ed.1
--- old/ed-1.12/doc/ed.1 2015-07-04 14:09:38.000000000 +0200
+++ new/ed-1.13/doc/ed.1 2016-01-24 19:15:37.000000000 +0100
@@ -1,5 +1,5 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.46.1.
-.TH ED "1" "July 2015" "ed 1.12" "User Commands"
+.TH ED "1" "January 2016" "ed 1.13" "User Commands"
.SH NAME
ed \- line-oriented text editor
.SH SYNOPSIS
@@ -49,7 +49,7 @@
.SH COPYRIGHT
Copyright \(co 1994 Andrew L. Moore.
.br
-Copyright \(co 2015 Antonio Diaz Diaz.
+Copyright \(co 2016 Antonio Diaz Diaz.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
.br
This is free software: you are free to change and redistribute it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/doc/ed.info new/ed-1.13/doc/ed.info
--- old/ed-1.12/doc/ed.info 2015-07-04 14:09:15.000000000 +0200
+++ new/ed-1.13/doc/ed.info 2016-01-24 18:55:11.000000000 +0100
@@ -5,7 +5,7 @@
* Ed: (ed). The GNU line editor
END-INFO-DIR-ENTRY
- Copyright (C) 1993, 1994, 2006-2015 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 2006-2016 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -18,7 +18,7 @@
The GNU ed line editor
**********************
-This manual is for GNU ed (version 1.12, 4 July 2015).
+This manual is for GNU ed (version 1.13, 24 January 2016).
GNU ed is a line-oriented text editor. It is used to create, display,
@@ -43,7 +43,7 @@
* GNU Free Documentation License:: How you can copy and share this manual
- Copyright (C) 1993, 1994, 2006-2015 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 2006-2016 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -338,7 +338,7 @@
'-l'
'--loose-exit-status'
- Do not exit with bad status if a command happens to "fail" (for
+ Don't exit with bad status if a command happens to "fail" (for
example if a substitution command finds nothing to replace). This
can be useful when 'ed' is invoked as the editor for crontab.
@@ -1412,16 +1412,16 @@
Tag Table:
Node: Top535
-Node: Overview2191
-Node: Introduction to line editing4247
-Node: Invoking ed11466
-Node: Line addressing13267
-Node: Regular expressions16344
-Node: Commands21688
-Node: Limitations32960
-Node: Diagnostics33605
-Node: Problems34306
-Node: GNU Free Documentation License34839
+Node: Overview2195
+Node: Introduction to line editing4251
+Node: Invoking ed11470
+Node: Line addressing13270
+Node: Regular expressions16347
+Node: Commands21691
+Node: Limitations32963
+Node: Diagnostics33608
+Node: Problems34309
+Node: GNU Free Documentation License34842
End Tag Table
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/doc/ed.texi new/ed-1.13/doc/ed.texi
--- old/ed-1.12/doc/ed.texi 2015-07-04 14:08:28.000000000 +0200
+++ new/ed-1.13/doc/ed.texi 2016-01-24 18:54:47.000000000 +0100
@@ -6,8 +6,8 @@
@finalout
@c %**end of header
-@set UPDATED 4 July 2015
-@set VERSION 1.12
+@set UPDATED 24 January 2016
+@set VERSION 1.13
@dircategory Basics
@direntry
@@ -15,7 +15,7 @@
@end direntry
@copying
-Copyright @copyright{} 1993, 1994, 2006-2015
+Copyright @copyright{} 1993, 1994, 2006-2016
Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
@@ -392,7 +392,7 @@
@item -l
@itemx --loose-exit-status
-Do not exit with bad status if a command happens to "fail" (for example
+Don't exit with bad status if a command happens to "fail" (for example
if a substitution command finds nothing to replace). This can be useful
when @command{ed} is invoked as the editor for crontab.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/ed.h new/ed-1.13/ed.h
--- old/ed-1.12/ed.h 2015-07-04 12:40:58.000000000 +0200
+++ new/ed-1.13/ed.h 2016-01-24 18:54:47.000000000 +0100
@@ -1,7 +1,7 @@
/* Global declarations for the ed editor. */
/* GNU ed - The GNU line editor.
Copyright (C) 1993, 1994 Andrew Moore, Talke Studio
- Copyright (C) 2006-2015 Antonio Diaz Diaz.
+ Copyright (C) 2006-2016 Antonio Diaz Diaz.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/global.c new/ed-1.13/global.c
--- old/ed-1.12/global.c 2015-01-11 19:43:16.000000000 +0100
+++ new/ed-1.13/global.c 2016-01-24 18:54:47.000000000 +0100
@@ -1,7 +1,7 @@
/* global.c: global command routines for the ed line editor */
/* GNU ed - The GNU line editor.
Copyright (C) 1993, 1994 Andrew Moore, Talke Studio
- Copyright (C) 2006-2015 Antonio Diaz Diaz.
+ Copyright (C) 2006-2016 Antonio Diaz Diaz.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/io.c new/ed-1.13/io.c
--- old/ed-1.12/io.c 2015-01-11 19:43:16.000000000 +0100
+++ new/ed-1.13/io.c 2016-01-24 18:54:47.000000000 +0100
@@ -1,7 +1,7 @@
/* io.c: i/o routines for the ed line editor */
/* GNU ed - The GNU line editor.
Copyright (C) 1993, 1994 Andrew Moore, Talke Studio
- Copyright (C) 2006-2015 Antonio Diaz Diaz.
+ Copyright (C) 2006-2016 Antonio Diaz Diaz.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -261,8 +261,8 @@
return -1;
}
size = read_stream( fp, addr );
- if( size < 0 ) return -1;
if( *filename == '!' ) ret = pclose( fp ); else ret = fclose( fp );
+ if( size < 0 ) return -1;
if( ret != 0 )
{
show_strerror( filename, errno );
@@ -319,8 +319,8 @@
return -1;
}
size = write_stream( fp, from, to );
- if( size < 0 ) return -1;
if( *filename == '!' ) ret = pclose( fp ); else ret = fclose( fp );
+ if( size < 0 ) return -1;
if( ret != 0 )
{
show_strerror( filename, errno );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/main.c new/ed-1.13/main.c
--- old/ed-1.12/main.c 2015-06-07 18:13:10.000000000 +0200
+++ new/ed-1.13/main.c 2016-01-24 18:54:47.000000000 +0100
@@ -1,5 +1,5 @@
/* GNU ed - The GNU line editor.
- Copyright (C) 2006-2015 Antonio Diaz Diaz.
+ Copyright (C) 2006-2016 Antonio Diaz Diaz.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
static const char * const Program_name = "GNU Ed";
static const char * const program_name = "ed";
-static const char * const program_year = "2015";
+static const char * const program_year = "2016";
static const char * invocation_name = 0;
static bool restricted_ = false; /* if set, run in restricted mode */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/main_loop.c new/ed-1.13/main_loop.c
--- old/ed-1.12/main_loop.c 2015-06-05 17:08:36.000000000 +0200
+++ new/ed-1.13/main_loop.c 2016-01-24 18:54:47.000000000 +0100
@@ -1,6 +1,6 @@
/* GNU ed - The GNU line editor.
Copyright (C) 1993, 1994 Andrew Moore, Talke Studio
- Copyright (C) 2006-2015 Antonio Diaz Diaz.
+ Copyright (C) 2006-2016 Antonio Diaz Diaz.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/regex.c new/ed-1.13/regex.c
--- old/ed-1.12/regex.c 2015-01-11 19:43:16.000000000 +0100
+++ new/ed-1.13/regex.c 2016-01-24 18:54:47.000000000 +0100
@@ -1,7 +1,7 @@
/* regex.c: regular expression interface routines for the ed line editor. */
/* GNU ed - The GNU line editor.
Copyright (C) 1993, 1994 Andrew Moore, Talke Studio
- Copyright (C) 2006-2015 Antonio Diaz Diaz.
+ Copyright (C) 2006-2016 Antonio Diaz Diaz.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/signal.c new/ed-1.13/signal.c
--- old/ed-1.12/signal.c 2015-01-13 13:47:41.000000000 +0100
+++ new/ed-1.13/signal.c 2016-01-24 18:54:47.000000000 +0100
@@ -1,7 +1,7 @@
/* signal.c: signal and miscellaneous routines for the ed line editor. */
/* GNU ed - The GNU line editor.
Copyright (C) 1993, 1994 Andrew Moore, Talke Studio
- Copyright (C) 2006-2015 Antonio Diaz Diaz.
+ Copyright (C) 2006-2016 Antonio Diaz Diaz.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ed-1.12/testsuite/check.sh new/ed-1.13/testsuite/check.sh
--- old/ed-1.12/testsuite/check.sh 2015-01-11 19:43:16.000000000 +0100
+++ new/ed-1.13/testsuite/check.sh 2016-01-24 18:54:47.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# check script for GNU ed - The GNU line editor
-# Copyright (C) 2006-2015 Antonio Diaz Diaz.
+# Copyright (C) 2006-2016 Antonio Diaz Diaz.
#
# This script is free software; you have unlimited permission
# to copy, distribute and modify it.
1
0
Hello community,
here is the log from the commit of package ovmf for openSUSE:Factory:NonFree checked in at 2016-02-26 22:20:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory:NonFree/ovmf (Old)
and /work/SRC/openSUSE:Factory:NonFree/.ovmf.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ovmf"
Changes:
--------
--- /work/SRC/openSUSE:Factory:NonFree/ovmf/ovmf.changes 2016-01-12 16:14:13.000000000 +0100
+++ /work/SRC/openSUSE:Factory:NonFree/.ovmf.new/ovmf.changes 2016-02-26 22:21:55.000000000 +0100
@@ -1,0 +2,191 @@
+Fri Feb 26 03:19:11 UTC 2016 - glin(a)suse.com
+
+- Update to 2015+git1456452471.ba33c80
+ + CryptoPkg: RuntimeCryptLib: support realloc(NULL, size)
+ + CryptoPkg: support free(NULL)
+ + MdePkg: Add EFI RAM Disk Protocol definitions
+ + MdePkg: Update Http11 with additional useful definitions
+ + NetworkPkg: Use Http11 definitions in HttpDxe and HttpBootDxe
+ + Add new HII action type EFI_BROWSER_ACTION_SUBMITTED
+ + UefiCpuPkg/Cpuid: Add UEFI CPUID application
+ + BaseTools/tools_def.txt: Add -march=i586 for IA32 GCC targets
+ + MdeModulePkg: Fix Memory Attributes table type issue
+ + MdePkg: Add definition for new warning code
+ EFI_WARN_FILE_SYSTEM
+ + OvmfPkg: add driver for Virtio-RNG device
+ + ArmVirtPkg: ArmVirtQemu: add driver for Virtio-RNG device
+ + OvmfPkg: implement UEFI driver for Virtio RNG devices
+ + OvmfPkg: VirtioFlush(): return the number of bytes written by
+ the host
+ + ArmPlatformPkg/IntelBds: call BdsLibConnectAll()
+ + ArmVirtPkg/ArmVirtQemu: limit ACPI support to v5.0 and higher
+ + MdeModulePkg: AcpiTableDxe: make 4 GB table allocation limit
+ optional
+ + ShellPkg: Support finding help message embedded in resource
+ section
+ + MdeModulePkg/UsbBusDxe: Fix memory leak
+ + MdePkg: BaseLib: fix AArch64 DAIF interrupt mask definitions
+ + ArmPkg: CpuDxe: don't track interrupt state in a global
+ variable
+ + ArmPkg: CpuDxe: fix AArch64 interrupt read masks
+ + MdeModulePkg: Refine the code in BootMaintenanceManagerUiLib
+ + MdeModulePkg: HiiDatabaseDxe: HiiStringToImage() should not
+ overwrite BltX
+ + CryptoPkg/OpensslLib: Upgrade OpenSSL version to 1.0.2f
+ + UefiCpuPkg/PiSmmCpuDxeSmm: Enable/Restore XD in SMM
+ + UefiCpuPkg/PiSmmCpuDxeSmm: Add EFIAPI to CheckFeatureSupported()
+ + ArmVirtPkg: ArmVirtQemu: make ACPI support AARCH64 only
+ + SecurityPkg: TcgConfigDxe: Move TPM state string update to
+ CallBack function
+ + MdePkg: Fix incorrect PCIe Extended Capabilities definition
+ + MdeModulePkg/Partition: Use proper partition number for MBR
+ + MdePkg: Change PcdPropertiesTableEnable default value to FALSE
+ + ArmVirtPkg: ArmVirtQemu: expose only 64-bit entry point for
+ v3.0+ SMBIOS
+ + NetworkPkg: Replace the internal function with exposed one
+ + MdeModulePkg: Define a general function to create DNS QName
+ + MdePkg: Add invocation register support in SMM Communication
+ ACPI Table
+ + MdeModulePkg: SNP should check Cdb.StatCode with
+ PXE_STATCODE_SUCCESS
+ + MdeModulePkg: Make the DEBUG info consistent in SNP driver
+ + Add UEFI2.6 MemoryAttributes Table
+ + OvmfPkg: simplify VARIABLE_STORE_HEADER generation
+ + Minor comments update to AllocatePages() and AllocatePool()
+ + MdeModulePkg DxeCore: Missing change for OEM reserved memory
+ type at R17460
+ + ArmPkg: DefaultExceptionHandler fixes for use with DxeCore
+ + BaseTools/GenFw AARCH64: add support for relative data
+ relocations
+- Update openssl to 1.0.2f
+
+-------------------------------------------------------------------
+ Feb 15 09:17:12 UTC 2016 - glin(a)suse.com
+
+- edk2 upstream switched the repo from svn to git, so the naming
+ has to change to use the git hash. The most recent stable release
+ of edk2 is UDK 2015, so the base version changes to 2015.
+- update to ovmf-2015+git1454310736.ed5e386
+ + MdePkg: Update the UEFI version to reflect new revision
+ + MdePkg: Add EFI Supplicant Protocol definitions
+ + MdePkg: Add EFI Wireless MAC Connection II Protocol definitions
+ + MdePkg: Add ACPI6.1 definition
+ + NetworkPkg: better sanity check on Ipv6 prefix length
+ + NetworkPkg: Reword PXE download message
+ + ShellPkg: ShellFileHandleReadLine must return UCS2 lines
+ + ArmPlatformPkg/Bds: Early Console Initialization
+ + ShellBinPkg: Arm/AArch64 Shell binary update
+ + ShellPkg: Fix ASCII and UNICODE file pipes
+ + ArmVirtPkg: implement ArmVirtQemuKernel
+ + ArmVirtPkg: introduce new ArmQemuRelocatablePlatformLib
+ + MdeModulePkg: Update DxeCore dispatcher to ignore PEI and SMM
+ depex for FV
+ + ArmPkg: Add isb when setting SCR
+ + MdeModulePkg/PcRtc: Still create timezone variable when
+ Daylight != 0
+ + MdeModulePkg/UsbAbsPointer:Fix GetState() to return absolute
+ value
+ + MdeModulePkg: Correct one return status code in SNP Transmit
+ function
+ + MdeModulePkg: Update the default size of MNP TX buffer pool
+ + MdeModulePkg: Update DBsize in SNP GetStatus command
+ + NetworkPkg:Add a new error status code EFI_HTTP_ERROR
+ + MdePkg:Add a new error status code EFI_HTTP_ERROR
+ + NetworkPkg: Fix suspicious dereference of pointer 'Mode.Ia'
+ + OvmfPkg: QemuBootOrderLib: recognize NVMe devices
+ + OvmfPkg: include NvmExpressDxe driver
+ + SecurityPkg: AuthVariableLib: Add new cert database for
+ volatile time based Auth variable
+ + MdeModulePkg: Add BS+RT+AT variable attribute definition
+ + MdePkg: Add new enum EfiPlatformConfigurationActionUnsupportedGuid
+ + PcAtChipsetPkg/Rtc: Don't unnecessarily create timezone
+ variable
+ + Correct inconsistent function descriptions in DNS
+ + OvmfPkg: Increase default RELEASE build image size to 2MB
+ + Minor update to the Data parameter for GetVariable()
+ + MdeModulePkg: NvmExpressDxe: clean up NvmeRead() / NvmeWrite()
+ debug msgs
+ + MdePkg:Add new traffic statistics definition for Wireless NIC
+ + NetworkPkg:Fix Network memory leak when calling GetModeData
+ interface
+ + SecurityPkg: Correct data copy in Tpm2NvReadPublic
+ + SecurityPkg: Add TPM PTP detection in Tpm12SubmitCommand
+ + MdeModulePkg DxeCore: Avoid the closed event to be signaled
+ wrongly
+ + SecurityPkg: SecureBootConfigDxe: Fix potential NULL pointer
+ dereference
+ + CryptoPkg: Fix function qsort for non 32-bit machines
+- update _service to fetch git repo
+
+-------------------------------------------------------------------
+Tue Jan 26 04:24:29 UTC 2016 - glin(a)suse.com
+
+- update to R19743
+ + NetworkPkg: Removing or adding some ASSERT statement
+ + MdeModulePkg:Fix the potential memory leak issue in Display
+ Engine
+ + MdeModulePkg: Add error DEBUG statements in ATA passthru driver
+ + NetworkPkg: DnsDxe: fix return type of DnsFillinQNameForQueryIp()
+ + MdeModulePkg/Ide: return correct status when DRQ is not ready
+ for ATAPI
+ + MdeModulePkg/ScsiDisk: Increase the value of SCSI_DISK_TIMEOUT
+ to 30s
+ + OvmfPkg: inherit Image Verification Policy defaults from
+ SecurityPkg
+ + OvmfPkg: execute option ROM images regardless of Secure Boot
+ + Rename TisTpmCommand to avoid name collision
+ + MdeModulePkg: update SNP.GetStatus to handle multiple recycled
+ TX buffer.
+ + MdeModulePkg: Update MNP driver to recycle TX buffer
+ asynchronously.
+ + Refine error handle code, avoid assert when load this module
+ twice.
+ + MdeModulePkg: DeleteLoadOptionVariable() removes Boot####
+ + MdeModulePkg: Fix GraphicsConsole driver resolution out of
+ sync issue
+ + SecurityPkg: MOR drivers use Tcg2Protocol instead of TrEE.
+ + SecurityPkg: Add Tpm2Startup return code check.
+ + SecurityPkg: Clear AuthSession content after use.
+ + BaseTools/VfrCompile: honor CC if it is set
+ + BaseTools AARCH64: add separate GCC build rule for XIP objects
+ + BaseTools AARCH64: build XIP modules with strict alignment
+ + SecurityPkg: TcgDxe,Tcg2Dxe,TrEEDxe: New PCD for TCG event log
+ and TCG2 final event log area
+ + NetworkPkg: Fix some typos in Http boot driver.
+ + MdeModulePkg: Add DNS QType and QClass values definition
+ + NetworkPkg: Remove DNS QType and QClass definition
+ + SecurityPkg: SecureBootConfigDxe: Change
+ KEY_TRANS_SECURE_BOOT_MODE value
+ + SecurityPkg: SecureBootConfigDxe: Enhance secure boot string
+ update logic
+ + MdeModulePkg:Fix the potential memory leak issue in Display
+ Engine
+ + ShellPkg: Update 'dh' command to reflect correct driver handle
+ information
+ + NetworkPkg: Fix IpSec SPD and SAD mapping issue when SPD is
+ updated
+ + NetworkPkg: Fix SPD entry edit policy issue in IPSecConfig.
+ + MdeModulePkg: Add new library class PciHostBridgeLib
+ + MdeModulePkg: Add PciHostBridgeLibNull
+ + MdePkg: Add PciSegmentLib instance based on PciLib
+ + MdeModulePkg: Add generic PciHostBridgeDxe driver.
+ + Add NOOPT target
+ + ShellPkg UefiDpLib: Use Image->FilePath to get name for SMM
+ drivers
+ + MdeModulePkg/.../IdeMode: actualize DRQReady*() comment blocks
+ + MdeModulePkg/.../IdeMode: report early finish of packet read
+ as success
+ + MdeModulePkg: SerialDxe: lay out mSerialIoMode initializer more
+ nicely
+ + MdeModulePkg: SerialDxe: sync EFI_SERIAL_IO_MODE.Timeout with
+ the spec
+ + MdeModulePkg: TerminalDxe: select the UART's default receive
+ FIFO depth
+ + BaseTools: make build report tolerant of FVs specified by name
+ + Replace TpmCommLib with Tpm12DeviceLib
+ + Add TPM 1.2 commands used by TCG modules
+ + SecurityPkg: Update TCG PPI "1.3" for TCG2.
+ + Add TPM PTP support
+- Remove upstreamed ovmf-fix-signedness.patch
+
+-------------------------------------------------------------------
Old:
----
openssl-1.0.2e.tar.gz
openssl-1.0.2e.tar.gz.asc
ovmf-0.1+svn19584.tar.xz
ovmf-fix-signedness.patch
New:
----
openssl-1.0.2f.tar.gz
openssl-1.0.2f.tar.gz.asc
ovmf-2015+git1456452471.ba33c80.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ovmf.spec ++++++
--- /var/tmp/diff_new_pack.xvUKdg/_old 2016-02-26 22:21:58.000000000 +0100
+++ /var/tmp/diff_new_pack.xvUKdg/_new 2016-02-26 22:21:58.000000000 +0100
@@ -18,17 +18,18 @@
# needssslcertforbuild
%undefine _build_create_debug
+%define openssl_version 1.0.2f
Name: ovmf
Url: http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=EDK2
Summary: Open Virtual Machine Firmware
License: BSD-2-Clause
Group: System/Emulators/PC
-Version: 0.1+svn19584
+Version: 2015+git1456452471.ba33c80
Release: 0
Source0: %{name}-%{version}.tar.xz
-Source1: https://www.openssl.org/source/openssl-1.0.2e.tar.gz
-Source111: https://www.openssl.org/source/openssl-1.0.2e.tar.gz.asc
+Source1: https://www.openssl.org/source/openssl-%{openssl_version}.tar.gz
+Source111: https://www.openssl.org/source/openssl-%{openssl_version}.tar.gz.asc
Source112: openssl.keyring
Source2: README
Source3: SLES-UEFI-CA-Certificate-2048.crt
@@ -46,7 +47,6 @@
Source101: gdb_uefi.py.in
Patch2: %{name}-embed-default-keys.patch
Patch3: %{name}-gdb-symbols.patch
-Patch4: %{name}-fix-signedness.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: libuuid-devel
BuildRequires: fdupes
@@ -144,10 +144,9 @@
%patch2 -p1
%endif
%patch3 -p1
-%patch4 -p1
# Intel has special patches for openssl
-pushd CryptoPkg/Library/OpensslLib/openssl-1.0.2e
-patch -p0 -i ../EDKII_openssl-1.0.2e.patch
+pushd CryptoPkg/Library/OpensslLib/openssl-%{openssl_version}
+patch -p0 -i ../EDKII_openssl-%{openssl_version}.patch
cd ..
./Install.sh
popd
++++++ _service ++++++
--- /var/tmp/diff_new_pack.xvUKdg/_old 2016-02-26 22:21:58.000000000 +0100
+++ /var/tmp/diff_new_pack.xvUKdg/_new 2016-02-26 22:21:58.000000000 +0100
@@ -1,9 +1,9 @@
<services>
<service name="tar_scm" mode="disabled">
<param name="filename">ovmf</param>
- <param name="versionformat">0.1+svn%r</param>
- <param name="url">https://svn.code.sf.net/p/edk2/code/trunk/edk2</param>
- <param name="scm">svn</param>
+ <param name="versionformat">2015+git%at.%h</param>
+ <param name="url">https://github.com/tianocore/edk2.git</param>
+ <param name="scm">git</param>
</service>
<service name="recompress" mode="disabled">
<param name="compression">xz</param>
++++++ openssl-1.0.2e.tar.gz -> openssl-1.0.2f.tar.gz ++++++
++++ 3271 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package nodejs-packaging for openSUSE:Factory checked in at 2016-02-26 22:20:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nodejs-packaging (Old)
and /work/SRC/openSUSE:Factory/.nodejs-packaging.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nodejs-packaging"
Changes:
--------
--- /work/SRC/openSUSE:Factory/nodejs-packaging/nodejs-packaging.changes 2016-02-26 00:36:59.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.nodejs-packaging.new/nodejs-packaging.changes 2016-02-26 22:20:58.000000000 +0100
@@ -1,0 +2,15 @@
+Fri Feb 26 16:05:46 UTC 2016 - i(a)marguerite.su
+
+- update version v10.beta8
+ * recursively copy files and fix exec permissions
+ for all files outside bin (github#6)
+ * colored text to prompt sources that should be
+ deleted for npkg
+ * bugfix: .css pattern will be skipped when copy
+ because of the regex ".c"
+ * bugfix: if two versions of tarball, only one
+ version will be copied.
+ * bugfix: bower in npkg, sometimes multiple name-*
+ will be found
+
+-------------------------------------------------------------------
Old:
----
nodejs-packaging-10.beta7.tar.gz
New:
----
nodejs-packaging-10.beta8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nodejs-packaging.spec ++++++
--- /var/tmp/diff_new_pack.084VbF/_old 2016-02-26 22:20:59.000000000 +0100
+++ /var/tmp/diff_new_pack.084VbF/_new 2016-02-26 22:20:59.000000000 +0100
@@ -18,7 +18,7 @@
%define _rpmconfigdir %{_prefix}/lib/rpm
Name: nodejs-packaging
-Version: 10.beta7
+Version: 10.beta8
Release: 0
Summary: Node.js Dependency generators for openSUSE
License: MIT
++++++ nodejs-packaging-10.beta7.tar.gz -> nodejs-packaging-10.beta8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nodejs-packaging-10.beta7/nodejs.rb new/nodejs-packaging-10.beta8/nodejs.rb
--- old/nodejs-packaging-10.beta7/nodejs.rb 2016-02-25 01:47:57.000000000 +0100
+++ new/nodejs-packaging-10.beta8/nodejs.rb 2016-02-26 16:51:36.000000000 +0100
@@ -33,19 +33,18 @@
def recursive_mkdir(json={},workspace="")
- json.keys.each do |key|
- version = json[key]["version"]
+ json.each do |key,v|
+ version = v["version"]
dest = workspace + "/" + key + "-" + version
unless has_bundle(key,version)
puts "Creating #{dest}"
FileUtils.mkdir_p dest
end
- unless json[key] == nil
- if json[key].keys.include?("dependencies")
- version = json[key]["version"]
- json[key]["dependencies"].each do |k,v|
+ unless v.nil?
+ if v.keys.include?("dependencies")
+ v["dependencies"].each do |k,v1|
i = {}
- i[k] = v
+ i[k] = v1
recursive_mkdir(i,workspace + "/" + key + "-" + version + "/node_modules")
end
end
@@ -54,6 +53,32 @@
end
+def recursive_copy(path="",dir="")
+ file = filter(path)
+ unless file.nil?
+ if File.directory? file
+ dir1 = file.gsub(/^.*\//,'')
+ puts "Making directory " + dir + "/" + dir1
+ FileUtils.mkdir_p dir + "/" + dir1
+ Dir.glob(file + "/*") do |f1|
+ f2 = filter(f1)
+ unless f2.nil?
+ if File.directory? f2
+ recursive_copy(f2,dir + "/" + dir1)
+ else
+ puts "Copying " + f2 + " => " + dir + "/" + dir1
+ FileUtils.cp_r f2,dir + "/" + dir1
+ end
+ end
+ end
+ else
+ puts "Copying " + file + " => " + dir
+ FileUtils.cp_r file,dir
+ end
+ end
+
+end
+
def backpath(path="",count="")
count.times do
@@ -83,11 +108,12 @@
def filter(file="")
f = file.split("/")
- if f.grep(/^\..*$|.*~$|\.bat|\.cmd|Makefile|test(s)?(\.js)?|example(s)?(\.js)?|benchmark(s)?(\.js)?|\.sh|_test\.|browser$|\.orig|\.bak|windows|\.sln|\.njsproj|\.exe|\.c|\.h|\.cc|\.cpp/).empty?
- unless f.grep(/LICENSE|\.md|\.txt|\.markdown/).empty?
- io = IO.popen("chmod -x #{file}")
- io.close
- end
+ if f.grep(/^\..*$|.*~$|\.bat$|\.cmd$|Makefile|test(s)?(\.js)?|example(s)?(\.js)?|benchmark(s)?(\.js)?|\.sh$|_test\.|browser$|\.orig$|\.bak$|windows|\.sln$|\.njsproj$|\.exe$|\.c$|\.h$|\.cc$|\.cpp$/).empty?
+ if File.file?(file) && File.executable?(file) && f.grep("bin").empty?
+ puts "Fixing permission: " + file
+ io = IO.popen("chmod -x #{file}")
+ io.close
+ end
return file
else
return nil
@@ -161,21 +187,7 @@
Dir.glob(buildroot + "/**/*") do |dir|
name = dir.gsub(/^.*\//,'')
Dir.glob(sourcedir + "/" + name + "/*") do |f|
- file = filter(f)
- unless file.nil?
- if File.directory? file
- dir1 = file.gsub(/^.*[0-9]\.[0-9]/,'')
- FileUtils.mkdir_p dir + dir1
- Dir.glob(file + "/**/*") do |f1|
- f2 = filter(f1)
- unless f2.nil?
- FileUtils.cp_r f2,dir + dir1
- end
- end
- else
- FileUtils.cp_r file,dir
- end
- end
+ recursive_copy(f,dir)
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nodejs-packaging-10.beta7/tool/npkg new/nodejs-packaging-10.beta8/tool/npkg
--- old/nodejs-packaging-10.beta7/tool/npkg 2016-02-25 01:47:57.000000000 +0100
+++ new/nodejs-packaging-10.beta8/tool/npkg 2016-02-26 16:51:36.000000000 +0100
@@ -74,18 +74,24 @@
deltaold.each do |d|
unless d.nil?
- p "#{d}.tgz needs to be deleted from source"
+ puts "\033[0;32m#{d}.tgz needs to be deleted from source\033[0m"
end
end
end
# bower
-io = IO.popen("tar -xf #{name}-*.tgz")
-io.close
-if File.exist? "package/bower.json"
- puts "Processing dependencies in bower.json"
- Bower.install(name)
+re = /#{name}-[0-9]/
+Dir.glob("*.tgz") do |f|
+ md = re.match(f)
+ if md
+ io = IO.popen("tar -xf #{f}")
+ io.close
+ if File.exist? "package/bower.json"
+ puts "Processing dependencies in bower.json"
+ Bower.install(name)
+ end
+ end
end
-FileUtils.rm_rf "package"
+FileUtils.rm_rf "package" if File.exist? "package"
#=end
1
0
Hello community,
here is the log from the commit of package calibre for openSUSE:Factory checked in at 2016-02-26 22:19:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/calibre (Old)
and /work/SRC/openSUSE:Factory/.calibre.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "calibre"
Changes:
--------
--- /work/SRC/openSUSE:Factory/calibre/calibre.changes 2016-02-16 09:18:48.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.calibre.new/calibre.changes 2016-02-26 22:20:51.000000000 +0100
@@ -1,0 +2,6 @@
+Fri Feb 26 15:34:03 UTC 2016 - cornelis(a)solcon.nl
+
+- Update to 2.52.0:
+ * For details, see http://calibre-ebook.com/whats-new
+
+-------------------------------------------------------------------
@@ -6 +12 @@
- * For setails, see http://calibre-ebook.com/whats-new
+ * For details, see http://calibre-ebook.com/whats-new
Old:
----
calibre-2.51.0.tar.xz
New:
----
calibre-2.52.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ calibre.spec ++++++
--- /var/tmp/diff_new_pack.8BkG7t/_old 2016-02-26 22:20:53.000000000 +0100
+++ /var/tmp/diff_new_pack.8BkG7t/_new 2016-02-26 22:20:53.000000000 +0100
@@ -20,7 +20,7 @@
License: GPL-3.0
Group: Productivity/Other
Name: calibre
-Version: 2.51.0
+Version: 2.52.0
Release: 0
Url: http://calibre-ebook.com
Source0: http://download.calibre-ebook.com/%{version}/calibre-%{version}.tar.xz
++++++ calibre-2.51.0.tar.xz -> calibre-2.52.0.tar.xz ++++++
/work/SRC/openSUSE:Factory/calibre/calibre-2.51.0.tar.xz /work/SRC/openSUSE:Factory/.calibre.new/calibre-2.52.0.tar.xz differ: char 26, line 1
1
0
Hello community,
here is the log from the commit of package libzrtpcpp for openSUSE:Factory checked in at 2016-02-26 22:19:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libzrtpcpp (Old)
and /work/SRC/openSUSE:Factory/.libzrtpcpp.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libzrtpcpp"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libzrtpcpp/libzrtpcpp.changes 2016-02-03 10:19:28.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libzrtpcpp.new/libzrtpcpp.changes 2016-02-26 22:19:57.000000000 +0100
@@ -1,0 +2,9 @@
+Mon Feb 8 12:34:06 UTC 2016 - jengelh(a)inai.de
+
+- Update to new upstream release 4.6.2
+* add-on to the code to implement handling of the disclosure flag.
+ See RFC6189, chapter 11 for more details.
+* A fix in the ZrtpCWrapper to initialize and use the ZRTP
+ master instance in case of multi-stream usage.
+
+-------------------------------------------------------------------
Old:
----
V4.5.0.tar.gz
New:
----
V4.6.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libzrtpcpp.spec ++++++
--- /var/tmp/diff_new_pack.5OWdaN/_old 2016-02-26 22:19:59.000000000 +0100
+++ /var/tmp/diff_new_pack.5OWdaN/_new 2016-02-26 22:19:59.000000000 +0100
@@ -18,7 +18,7 @@
Name: libzrtpcpp
%define lname libzrtpcpp4
-Version: 4.5.0
+Version: 4.6.2
Release: 0
Summary: A ccrtp extension for ZRTP support
License: GPL-3.0+
@@ -64,7 +64,7 @@
%prep
%setup -qn ZRTPCPP-%version
-chmod a-x INSTALL NEWS
+chmod a-x INSTALL
%build
mkdir build
@@ -98,7 +98,7 @@
%files -n %lname
%defattr(-,root,root,0755)
-%doc AUTHORS COPYING NEWS README.md
+%doc AUTHORS COPYING README.md
%_libdir/libzrtpcpp.so.4*
%files devel
++++++ V4.5.0.tar.gz -> V4.6.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/CMakeLists.txt new/ZRTPCPP-4.6.2/CMakeLists.txt
--- old/ZRTPCPP-4.5.0/CMakeLists.txt 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/CMakeLists.txt 2016-02-04 16:32:31.000000000 +0100
@@ -13,10 +13,10 @@
PROJECT(libzrtpcpp)
SET(CPACK_PACKAGE_VERSION_MAJOR 4)
-SET(CPACK_PACKAGE_VERSION_MINOR 5)
-SET(CPACK_PACKAGE_VERSION_PATCH 0)
+SET(CPACK_PACKAGE_VERSION_MINOR 6)
+SET(CPACK_PACKAGE_VERSION_PATCH 2)
-set (VERSION 4.5.0)
+set (VERSION 4.6.2)
set (SOVERSION 4)
# Define supported command line parameters.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/NEWS new/ZRTPCPP-4.6.2/NEWS
--- old/ZRTPCPP-4.5.0/NEWS 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/NEWS 1970-01-01 01:00:00.000000000 +0100
@@ -1,507 +0,0 @@
-== GNU ZRTP 4.5.0 ==
-
-Added a new SAS algorithm 'B32E' that uses 32 Unicode Emoji
-code points instead of 32 ASCII characters. Application that
-are able to display Emojis may use this new SAS algorithm to
-display nice Emojis instead of 'boring' ASCII letters and
-digits.
-
-Some technical details:
-- the 32 selected emojis are easily distinguishable, known to
- everyone, not offending etc, and use standard Unicode code
- points
-- select colored emojis that look good on white and on black
- backgrounds (most emojis look good on white only)
-- select emojis that are available on iOS, Android, Mac OS X
- (Windows not checked)
-- the resulting SAS string is UTF-8 encoded, suitable for most
- platforms except Java.
-
-To use the codes for Java the application needs to translate the
-UTF-8 encoding into UTF-16 encoding. Because most of the emojis
-are Unicode supplementary characters the UTF-8 to UTF-16 conversion
-must generate the necessary UTF-16 surrogate pairs.
-
-To support the UTF-8 / UTF-16 conversion the common directory
-contains conversion functions that I extracted from ICU C/C++
-library source.
-
-
-== GNU ZRTP 4.4.0 ==
-
-Changes the handling of HMAC and Hash contexts to avoild tool
-many malloc/free calls and thus memory pointer problems.
-
-Enhance the handling an check the nonce when using multi-stream
-mode. This required a modification to the class file and some
-modifications on the API. The old functions are now deprecated
-but still usable. Nevertheless you should change your application
-to use the new fuctions which support the new nonce handling and
-checks.
-
-Some bug fixing as well.
-
-== GNU ZRTP 4.3.1 ==
-
-This is a bugfix release. It fixes several compiler issues in
-iOS8 Clang, Mircosoft C++ compiler (VS 2012) etc.
-
-This release also adds a fix to address a possible problem when
-using 'memset(...)' on a memory area immediately followed by a
-'free(...)' call to free this memory area. Some compilers may
-otpimize the code and do not call 'memset(...)'. That's bad for
-software that deals with secure keys :-) . The fix removes this
-possible vulnerability.
-
-
-== GNU ZRTP 4.3.0 ==
-
-This version adds some new API that provide to set retry timer
-values and to get some retry counters.
-
-Application may now set some values of the retry counters during
-the discovery (Hello) and the negotiation phase. Applications may
-increase the number of retries or modify the capping to support
-slow or bad networks.
-
-To get some idea about the actual number of retries during ZRTP
-negotiation an application may now use the new API to get an array
-of counters. The ZRTP state engine records how many retries occured
-during the different protocol states.
-
-Note: only the ZRTP initiator performs packet retries after the
-discovery (Hello) phase. The responder would always return zero
-alues for the other retry counters.
-
-Because we have a new set of functions the API changed, thus it's
-necessary to recompile applications that use the new library version.
-
-
-== GNU ZRTP 4.2.4 ==
-
-Only small changes to enable Android X86 (see clients/tivi/android)
-as an example.
-
-Rename functions aes_init() to aes_init_zrtp() to avoid names clashes
-with other libreries that may include own AES modules.
-
-
-== GNU ZRTP 4.2.3 ==
-
-The optional SAS relay feature (refer to RFC6189, chapter 7.3) is
-not longer compiled by default. If your project needs this support
-then modify the CMakeLists.txt file and uncomment a 'add_definition'
-statments. See comment in the CMakelists.txt file.
-
-The reasons to disable this optional feature in the default build:
-it's rarely used and some concerns about misusing this feature.
-
-
-== GNU ZRTP 4.2.2 ==
-
-A small enhancement in SRTP handling to provide a longer bit-shift
-register with 128 bits. The replay now check accepts packets which
-are up to 127 sequence number behing the current packet. The upper
-layer (codecs) gets more packets on slower/bad networks that we may
-see on mobile 3G/4G connections.
-
-If the codecs do not remove silence then this may lead to some longer
-audio replay, similar to sattelite communication.
-
-
-== GNU ZRTP 4.2.1 ==
-
-Bug fixes in the SRTP part that checks for replay and updates the ROC.
-
-The wrong computations lead to false replay indications and to wrong
-HMAC, thus they dropped to much packets, in particular under bad network
-conditions.
-
-Changed the handling the the zrtp_getSasType function the the ZrtpCWrapper.
-Please check the inline documentation and the compiler warning how to
-use the return value of the function.
-
-
-== GNU ZRTP 4.2.0 ==
-
-Implemented a new function to read the ZID file if the ZID file backend
-is SQlite3. This is not a security problem because the ZRTP cache was
-always public and readable, refer to RFC6189.
-
-SQL statement returns all ZID records, sorted by date, newest on top. The
-function can then step thru the DB cursor and read the records.
-
-The version also include sevral fixes, usually compiler warnings, some
-small problems reported by 'cppcheck' analyser.
-
-Because we have a new set of functions the API changed, thus it's necessary
-to recompile applications that use the new library version.
-
-
-== GNU ZRTP 4.1.2 ==
-
-Fix the library's name in libzrtpcpp.pc.make
-
-== GNU ZRTP 4.1.1 ==
-
-Is a bug fix release that fixes some problems when building a standalone
-version of the library, i.e. with embedded crypto algorithms and not using
-on openSSL.
-
-Another fix was necessary for NetBSD thread handling.
-
-
-== GNU ZRTP 4.1.0 ==
-
-Small enhancements when dealing with non-NIST algorithms. An application may
-set a ''algorithm selection policy'' to control the selection behaviour. In
-addition the the standrad selection policy (as per RFC6189) this version
-provides a _non-NIST_ selection policy: if the selected public key algorithm
-is a non-NIST ECC algorithm then the other selection functions prefer non-NIST
-HASH algorithms (Skein etc).
-
-
-== GNU ZRTP 4.0.0 ==
-
-For this version I added some new algorithms for the DH key agreement
-and the Skein Hash for ZRTP. Not further functional enhancments.
-
-Added a new (old) build parameter -DCORE_LIB that will build a ZRTP core
-library. This was available in V2.3 but I somehow lost this for 3.0
-You may add other build parameters, such as SQLITE and CRYPTO_STANDALONE
-if you build the core library.
-
-
-== GNU ZRTP 3.2.0 ==
-
-The main ZRTP modules contain fixes for three vulnerabilities found by Mark
-Dowd. Thus we advise application developers to use this version of the
-library. The vulnerabilities may lead to application crashes during ZRTP
-negotiation if an attacker sends prepared ZRTP packets. The fixes remove these
-attack vectors.
-
-Some small other enhancements and cleanup, mainly inside client code.
-
-Some enhancements in cache handling and the handling of retained shared
-secrets. This change was proposed by Phil, is a slight security enhacement and
-is fully backward comaptible.
-
-Because of some API changes clients must be compiled and linked with the new
-library.
-
-For details please refer to the Git logs.
-
-
-== GNU ZRTP 3.1.0 ==
-
-This version adds some new features and code that supports some other
-client and this accounts for the most changes inside this release.
-
-The ZRTP core functionality was not changed as much (bug fixes, cleanup
-mainly) and remains fully backward compatible with older library
-versions. However, one nice enhancement was done: the addition of a standalone
-SDES support module. This module supports basic SDES only without the fancy
-stuff like many other SDES implementations. Thus it's pretty interoperable.
-
-Some other features are:
-- add some android support for a client, may serve as template for others
-- documentation and code cleanup
-
-Because of some API changes clients must be compiled and linked with the new
-library.
-
-
-== GNU ZRTP 3.0.0 ==
-
-This is a major enhancement and restructuring of the overall ZRTP
-distribution. This was necessary because more and more other clients use ZRTP
-and add their specific glue code. Also some clients are not prepared to use
-openSSL or other crypto libraries to their code and distributions.
-
-Here a summary of the changes
-- a new directory layout to accomodate various clients
-- add standalone crypto modules, for example for AES, to have a real
- standalone ZRTP/SRTP library that does not require any other crypto library
- (optional via CMake configuration)
-- Re-structure ZRTP cache and add SQlite3 as optional storage backend
-
-The default settings for CMake build the normal ZRTP library that use openSSL
-as crypto backend, use the normal file based cache and include the GNU ccRTP
-modules. This is a librray that is to a large degree compatible with the
-earlier builds.
-
-Please refer to the top level CMakeFile.txt for options how to switch on the
-standalone crypto mode or the SQlite3 based cache storage.
-
-
-== GNU ZRTP 2.3.0 ==
-
-Add a "paranoid" mode to ZRTP. If and applications switches to this mode then
-the ZRTP stack _always_ asks the user to confirm the SAS thus ZRTP behaves as
-if it does not have a cache to store the retained secrets. However, setting
-the paranoid mode does not diable the cache, only the GUI behaviour.
-
-Enhance the CMake scripts to build a ZRTP library that does not contain GNU
-ccRTP modules and does not require ccRTP dependencies.
-
-== GNU ZRTP 2.2.0 ==
-
-Add stubs, callbacks and other provisions to prepare the full implementation
-of the SAS signing feature, see RFC6189, section 7.2. This feature needs
-support from applications and is rarely used if at all.
-
-As usual smaller fixes, code clean up etc.
-
-Because of some API changes clients must be compiled and linked with the new
-library.
-
-== GNU ZRTP 2.1.2 ==
-
-The main topic of this release was to add SRTCP support and some missing
-optional features of ZRTP.
-
-As such I've added some new API and classes that applications may use to add
-SRTCP or to use the new ZRTP features. the ZRTP stack now supports PBX
-handling, refer to RFC6189 section 7.3ff.
-
-Because of some API changes clients must be compiled and linked with the new
-library.
-
-== GNU ZRTP 2.0.0 ==
-
-Modify some files to use the new uCommon/commoncpp libraries instead
-of the GNU CC++ commoncpp2. This affects the ccRTP depended modules
-such as ZrtpQueue and the Timeout stuff.
-
-Updated to version 2.0.0 to be in synch with the ccRTP version number
-scheme.
-
-
-== GNU ZRTP 1.6.0 ==
-
-This version implements the Elliptic Curve Diffie-Helman (ECDH)
-public-key algorithm.
-
-ZRTP also supports new algorithms which are defined as optional
-in the ZRTP RFC. These are:
-- Skein Hash
-- Skein MAC for authentication
-- Twofish symmetric ciphers
-
-Twofish ciphers and Skein MAC are supported by GNU ccRTP SRTP
-implmentation as well.
-
-
-== GNU ZRTP 1.5.4 ==
-
-The changes in this release affect the ZRTP Configure mechanism only.
-Some housekeeping stuff (desctructors) was added and the C Wrapper
-how support ZRTP configure as well.
-
-Because of some API changes (added destructors) clients must be compiled
-and linked with the new library.
-
-
-== GNU ZRTP 1.5.2 ==
-
-Quite a lot of enhancements:
-- a CMake based build process was added
-- a C wrapper was added to enable C programs to use GNU ZRTP
-- some fixes in the code (race condition solved)
-- better support of multi-stream mode
-- change the old cxx file extension to cpp, some build system don't
- like the old cxx (Android NDK for example)
-- and much more
-
-Because of API changes clients must be compiled and linked with the new
-library.
-
-== GNU ZRTP 1.5.0 ==
-
-Adds a first version of a ZrtpConfigure class that provides applications
-to select which crypto and hash methods to use.
-
-Because of API changes clients must be compiled and linked with the new
-library.
-
-== GNU ZRTP 1.4.5 ==
-
-Modify the Hello repeat timer handling to accomodate slow connections and/or
-slow devices.
-
-Fix a problem when the other party sends only ZRTP packets at the beginning
-of a RTP session.
-
-=== Interface changes in 1.4.5 ===
-
-No external interfaces were changed, external API and ABI remain stable.
-Internal interface modifications only to implement Ping/PingAck handling.
-
-
-== GNU ZRTP 1.4.4 ==
-
-Implement the Ping/PingAck packets and associated protocol extensions
-as defined in [http://tools.ietf.org/html/draft-zimmermann-avt-zrtp-15]
-
-=== Interface changes in 1.4.4 ===
-
-No external interfaces were changed, external API and ABI remain stable.
-Internal interface modifications only to implement Ping/PingAck handling.
-
-
-== GNU ZRTP 1.4.2 ==
-
-Introduce the Key Derivation Function (KDF) as defined in
-[http://tools.ietf.org/html/draft-zimmermann-avt-zrtp-12].
-
-The ZRTP protocol version was updated to 1.10.
-
-=== Interface changes in 1.4.2 ===
-
-No interfaces were changed, API and ABI remain stable.
-
-
-== GNU ZRTP 1.4.0 ==
-
-This is the first release that is conformant to the ZRTP specification
-that eventually will become a RFC. See:
-[http://tools.ietf.org/html/draft-zimmermann-avt-zrtp-10]
-
-The ZRTP protocol version was updated to 1.00.
-
-
-=== Interface changes in 1.4.0 ===
-
-The ZrtpQueue and ZRtp classes implement a new method to get the other
-party's ZID (ZRTP identifier). An application, for example a SIP or XMPP
-client, may use this method to get the other party's ZID and store it
-together in a contact list. This enable the application to check the ZID
-if the user calls the other party again. A client shall implement such
-a feature to enhance security if user's don't compare the SAS on every
-call after they confirmed a SAS once.
-
-Clients must be compiled and linked with the new library.
-
-
-== GNU ZRTP 1.3.1 ==
-
-This is an update to version 1.3.0 and implements the ZRTP multi-stream
-mode handshake. The ZRTP protocl version was updated to 0.90 and
-interoperability tests using the latest Zfone build and Zfone Beta
-(dated September 6, 2008) were successful.
-
-No changes in the external API and ABI with respect to 1.3.0 - thus no
-recompile or rebuild of clients are necessary if they use 1.3.0.
-
-To checkout version 1.3.1 specify revision 494 (-r 494).
-
-
-== GNU ZRTP 1.3.0 ==
-
-This version is and update to version 1.1.0 an implements the latest
-changes define in the ZRTP draft. The changes resulted in an update of the
-API, therefore existing applications must be recompiled.
-
-This version of GNU ZRTP is compatible to and was tested to work with
-the latest Zfone beta (dated June, 10, see Zfone project site). Only
-in one specific error case is a slight incompatibility that will be
-fixed with the next Zfone beta. This incompatibility results in a
-severe error information at the client. The error only happens if
-someone modified the first retained shared secret entry in the
-retained secret cache, for example disk/storage read error. This is
-a very unlikely situation.
-
-=== Interface changes in Version 1.3.0 ===
-
-The Method ''setSipsSecret(...)'' is no longer available. ZRTP does
-not support this additional secret anymore.
-
-The method ''setOtherSecret(...)'' was renamed to ''setPbxSecret(...)''
-to reflect the modification in the draft.
-
-The method ''setSrtpsSecret(...)'' was renamed to ''setAuxSecret(...)''
-to reflect the modification in the draft.
-
-
-== GNU ZRTP 1.1.0 ==
-
-GNU ZRTP 1.1.0 implements the basic ZRTP as specificied in the document
-''draft-zimmermann-avt-zrtp-06x''. You may access this at this URL:
-[http://zfoneproject.com/zrtp_ietf.html]
-
-This version of GNU ZRTP does not support the additiona featur of ZRTP
-such as Multi-stream mode, Pre-shared mode, PBX enrollement, and SAS
-Signature. However, to keep the external interface as stable as
-possible I already implmented stubs for the additional features. Some
-later versions may have these features implemented, depending if they
-are required by the community.
-
-The current version of GNU ZRTP is compatible and was tested to work
-with the latest Zfone beta (dated April, 2nd) (see Zfone project
-site).
-
-=== Interface changes ==
-
-The ''SymmetricZRTPSession'' implements some new methods to control
-ZRTP and its new features. An application usually uses only a few
-methods to setup GNU ZRTP. All others are optional and an application
-may use them only if it requires a special feature (which are not yet
-implemented :-) ).
-
-The ''ZrtpUserCallback'' class was modified as well. From an
-application's point of view
-
- * The methods in ''ZrtpUserCallback'' are not pure virtual anymore
- but just virtual and have a default implementation, usually a
- simple return. An application may extend this class and overwrite
- only those methods it requires.
-
- * Change of the constructor - remove the queue parameter thus we have
- a very simple standard constructor. This modifcation may requires a
- small change in the application or class that uses or extends
- ''ZrtpUserCallback''.
-
- * The method showSAS has an additional parameter:
-
- showSAS(std::string sas, bool verified);
-
- the verified flag is set to true in SAS is verified, false if not verified.
- This allows a more flexible support to display the SAS even if SAS is
- verified. Formerly ZRTP did not call "showSAS()" if SAS was verified. Now
- ZRTP always calls showSAS and provides the verification information
- explicitly.
-
-* The siganture of the following user callback methods was changed:
-
- showMessage(GnuZrtpCodes::MessageSeverity sev, int32_t subCode)
-
- zrtpNegotiationFailed(GnuZrtpCodes::MessageSeverity severity,
- int32_t subCode)
-
- The GNU ZRTP core and the ZRTP ccRTP extension do not contain
- message strings anymore. Both use codes to inform an application
- about events, problems or failure. The folder ''demo'' contains a
- small demo program that shows one way how to map the codes to
- strings. Delegating string handling and formating to the application
- simplifies internationalization etc.
-
-Plaese note: some new callback methods and ''SymmetricZRTPSession''
-methods are only stubs in the currect version. The real implementation
-(filling the stubs with real code) will be done some time later (see
-above about unsupported features).
-
-=== Header files ===
-
-The new version greatly reduces the number of header files installed
-in the include directory. In the new version I decoupled the internal
-header files and implementation from the external classes and
-interfaces an application requires. Only six header files are
-installed in GNU ZRTP's include directory (libzrtpcpp subdirectory in
-the usual include paths)
-
-== Demo program ==
-
-The new folder ''demo'' contains a small demo program that shows
-various ways how to use GNU ZRTP to setup secure RTP (SRTP) sessions
-even without signaling protocols
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/NEWS.md new/ZRTPCPP-4.6.2/NEWS.md
--- old/ZRTPCPP-4.5.0/NEWS.md 1970-01-01 01:00:00.000000000 +0100
+++ new/ZRTPCPP-4.6.2/NEWS.md 2016-02-04 16:32:31.000000000 +0100
@@ -0,0 +1,549 @@
+## GNU ZRTP 4.6.2 ##
+
+A small fix in the ZrtpCWrapper to fix an issue within 4.6.1
+;-)
+
+
+## GNU ZRTP 4.6.1 ##
+
+A small fix in the ZrtpCWrapper to initialize and use the ZRTP
+master instance in case of multi-stream usage. Does not affect
+the main ZRTP usage, only projects that use the wrapper such
+as PJSIP or Gstreamer projects.
+
+These project should re-compile if they use the multi-stream
+feature.
+
+
+## GNU ZRTP 4.6.0 ##
+
+Only a small add-on to the code to implement handling of the
+disclosure flag. See RFC6189, chapter 11 for more details
+about the disclosure flag.
+
+Because the API changed, thus it's necessary to recompile
+applications that use the new library version.
+
+
+## GNU ZRTP 4.5.0 ##
+
+Added a new SAS algorithm 'B32E' that uses 32 Unicode Emoji
+code points instead of 32 ASCII characters. Application that
+are able to display Emojis may use this new SAS algorithm to
+display nice Emojis instead of 'boring' ASCII letters and
+digits.
+
+Some technical details:
+
+* the 32 selected emojis are easily distinguishable, known to
+ everyone, not offending etc, and use standard Unicode code
+ points
+* select colored emojis that look good on white and on black
+ backgrounds (most emojis look good on white only)
+* select emojis that are available on iOS, Android, Mac OS X
+ (Windows not checked)
+* the resulting SAS string is UTF-8 encoded, suitable for most
+ platforms except Java.
+
+To use the codes for Java the application needs to translate the
+UTF-8 encoding into UTF-16 encoding. Because most of the emojis
+are Unicode supplementary characters the UTF-8 to UTF-16 conversion
+must generate the necessary UTF-16 surrogate pairs.
+
+To support the UTF-8 / UTF-16 conversion the common directory
+contains conversion functions that I extracted from ICU C/C++
+library source.
+
+Because the API changed, thus it's necessary to recompile
+applications that use the new library version.
+
+
+## GNU ZRTP 4.4.0 ##
+
+Changes the handling of HMAC and Hash contexts to avoid too
+many malloc/free calls and thus memory pointer problems.
+
+Enhance the handling an check the nonce when using multi-stream
+mode. This required a modification to the class file and some
+modifications on the API. The old functions are now deprecated
+but still usable. Nevertheless you should change your application
+to use the new fuctions which support the new nonce handling and
+checks.
+
+Some bug fixing as well.
+
+Because the API changed, thus it's necessary to recompile
+applications that use the new library version.
+
+
+## GNU ZRTP 4.3.1 ##
+
+This is a bugfix release. It fixes several compiler issues in
+iOS8 Clang, Mircosoft C++ compiler (VS 2012) etc.
+
+This release also adds a fix to address a possible problem when
+using 'memset(...)' on a memory area immediately followed by a
+'free(...)' call to free this memory area. Some compilers may
+otpimize the code and do not call 'memset(...)'. That's bad for
+software that deals with secure keys :-) . The fix removes this
+possible vulnerability.
+
+
+## GNU ZRTP 4.3.0 ##
+
+This version adds some new API that provide to set retry timer
+values and to get some retry counters.
+
+Application may now set some values of the retry counters during
+the discovery (Hello) and the negotiation phase. Applications may
+increase the number of retries or modify the capping to support
+slow or bad networks.
+
+To get some idea about the actual number of retries during ZRTP
+negotiation an application may now use the new API to get an array
+of counters. The ZRTP state engine records how many retries occured
+during the different protocol states.
+
+Note: only the ZRTP initiator performs packet retries after the
+discovery (Hello) phase. The responder would always return zero
+alues for the other retry counters.
+
+Because we have a new set of functions the API changed, thus it's
+necessary to recompile applications that use the new library version.
+
+
+## GNU ZRTP 4.2.4 ##
+
+Only small changes to enable Android X86 (see clients/tivi/android)
+as an example.
+
+Rename functions aes_init() to aes_init_zrtp() to avoid names clashes
+with other libraries that may include own AES modules.
+
+
+## GNU ZRTP 4.2.3 ##
+
+The optional SAS relay feature (refer to RFC6189, chapter 7.3) is
+not longer compiled by default. If your project needs this support
+then modify the CMakeLists.txt file and uncomment a 'add_definition'
+statements. See comment in the CMakelists.txt file.
+
+The reasons to disable this optional feature in the default build:
+it's rarely used and some concerns about misusing this feature.
+
+
+## GNU ZRTP 4.2.2 ##
+
+A small enhancement in SRTP handling to provide a longer bit-shift
+register with 128 bits. The replay check now accepts packets which
+are up to 127 sequence number behind the current packet. The upper
+layer (codecs) gets more packets on slower/bad networks that we may
+see on mobile 3G/4G connections.
+
+If the codecs do not remove silence then this may lead to some longer
+audio replay, similar to satellite communication.
+
+
+## GNU ZRTP 4.2.1 ##
+
+Bug fixes in the SRTP part that checks for replay and updates the ROC.
+
+The wrong computations lead to false replay indications and to wrong
+HMAC, thus they dropped to much packets, in particular under bad network
+conditions.
+
+Changed the handling the the zrtp_getSasType function the the ZrtpCWrapper.
+Please check the inline documentation and the compiler warning how to
+use the return value of the function.
+
+
+## GNU ZRTP 4.2.0 ##
+
+Implemented a new function to read the ZID file if the ZID file backend
+is SQlite3. This is not a security problem because the ZRTP cache was
+always public and readable, refer to RFC6189.
+
+SQL statement returns all ZID records, sorted by date, newest on top. The
+function can then step thru the DB cursor and read the records.
+
+The version also include several fixes, usually compiler warnings, some
+small problems reported by 'cppcheck' analyser.
+
+Because we have a new set of functions the API changed, thus it's necessary
+to recompile applications that use the new library version.
+
+
+## GNU ZRTP 4.1.2 ##
+
+Fix the library's name in libzrtpcpp.pc.make
+
+## GNU ZRTP 4.1.1 ##
+
+Is a bug fix release that fixes some problems when building a standalone
+version of the library, i.e. with embedded crypto algorithms and not using
+on openSSL.
+
+Another fix was necessary for NetBSD thread handling.
+
+
+## GNU ZRTP 4.1.0 ##
+
+Small enhancements when dealing with non-NIST algorithms. An application may
+set a ''algorithm selection policy'' to control the selection behaviour. In
+addition the the standrad selection policy (as per RFC6189) this version
+provides a _non-NIST_ selection policy: if the selected public key algorithm
+is a non-NIST ECC algorithm then the other selection functions prefer non-NIST
+HASH algorithms (Skein etc).
+
+
+## GNU ZRTP 4.0.0 ##
+
+For this version I added some new algorithms for the DH key agreement
+and the Skein Hash for ZRTP. Not further functional enhancements.
+
+Added a new (old) build parameter -DCORE_LIB that will build a ZRTP core
+library. This was available in V2.3 but I somehow lost this for 3.0
+You may add other build parameters, such as SQLITE and CRYPTO_STANDALONE
+if you build the core library.
+
+
+## GNU ZRTP 3.2.0 ##
+
+The main ZRTP modules contain fixes for three vulnerabilities found by Mark
+Dowd. Thus we advise application developers to use this version of the
+library. The vulnerabilities may lead to application crashes during ZRTP
+negotiation if an attacker sends prepared ZRTP packets. The fixes remove these
+attack vectors.
+
+Some small other enhancements and cleanup, mainly inside client code.
+
+Some enhancements in cache handling and the handling of retained shared
+secrets. This change was proposed by Phil, is a slight security enhancement and
+is fully backward compatible.
+
+Because of some API changes clients must be compiled and linked with the new
+library.
+
+For details please refer to the Git logs.
+
+
+## GNU ZRTP 3.1.0 ##
+
+This version adds some new features and code that supports some other
+client and this accounts for the most changes inside this release.
+
+The ZRTP core functionality was not changed as much (bug fixes, cleanup
+mainly) and remains fully backward compatible with older library
+versions. However, one nice enhancement was done: the addition of a standalone
+SDES support module. This module supports basic SDES only without the fancy
+stuff like many other SDES implementations. Thus it's pretty interoperable.
+
+Some other features are:
+
+* add some android support for a client, may serve as template for others
+* documentation and code cleanup
+
+Because of some API changes clients must be compiled and linked with the new
+library.
+
+
+## GNU ZRTP 3.0.0 ##
+
+This is a major enhancement and restructuring of the overall ZRTP
+distribution. This was necessary because more and more other clients use ZRTP
+and add their specific glue code. Also some clients are not prepared to use
+openSSL or other crypto libraries to their code and distributions.
+
+Here a summary of the changes
+
+* a new directory layout to accommodate various clients
+* add standalone crypto modules, for example for AES, to have a real
+ standalone ZRTP/SRTP library that does not require any other crypto library
+ (optional via CMake configuration)
+* Re-structure ZRTP cache and add SQlite3 as optional storage backend
+
+The default settings for CMake build the normal ZRTP library that use openSSL
+as crypto backend, use the normal file based cache and include the GNU ccRTP
+modules. This is a librray that is to a large degree compatible with the
+earlier builds.
+
+Please refer to the top level CMakeFile.txt for options how to switch on the
+standalone crypto mode or the SQlite3 based cache storage.
+
+
+## GNU ZRTP 2.3.0 ##
+
+Add a "paranoid" mode to ZRTP. If and applications switches to this mode then
+the ZRTP stack _always_ asks the user to confirm the SAS thus ZRTP behaves as
+if it does not have a cache to store the retained secrets. However, setting
+the paranoid mode does not disable the cache, only the GUI behaviour.
+
+Enhance the CMake scripts to build a ZRTP library that does not contain GNU
+ccRTP modules and does not require ccRTP dependencies.
+
+## GNU ZRTP 2.2.0 ##
+
+Add stubs, callbacks and other provisions to prepare the full implementation
+of the SAS signing feature, see RFC6189, section 7.2. This feature needs
+support from applications and is rarely used if at all.
+
+As usual smaller fixes, code clean up etc.
+
+Because of some API changes clients must be compiled and linked with the new
+library.
+
+## GNU ZRTP 2.1.2 ##
+
+The main topic of this release was to add SRTCP support and some missing
+optional features of ZRTP.
+
+As such I've added some new API and classes that applications may use to add
+SRTCP or to use the new ZRTP features. the ZRTP stack now supports PBX
+handling, refer to RFC6189 section 7.3ff.
+
+Because of some API changes clients must be compiled and linked with the new
+library.
+
+## GNU ZRTP 2.0.0 ##
+
+Modify some files to use the new uCommon/commoncpp libraries instead
+of the GNU CC++ commoncpp2. This affects the ccRTP depended modules
+such as ZrtpQueue and the Timeout stuff.
+
+Updated to version 2.0.0 to be in synch with the ccRTP version number
+scheme.
+
+
+## GNU ZRTP 1.6.0 ##
+
+This version implements the Elliptic Curve Diffie-Helman (ECDH)
+public-key algorithm.
+
+ZRTP also supports new algorithms which are defined as optional
+in the ZRTP RFC. These are:
+
+* Skein Hash
+* Skein MAC for authentication
+* Twofish symmetric ciphers
+
+Twofish ciphers and Skein MAC are supported by GNU ccRTP SRTP
+implementation as well.
+
+
+## GNU ZRTP 1.5.4 ##
+
+The changes in this release affect the ZRTP Configure mechanism only.
+Some housekeeping stuff (destructors) was added and the C Wrapper
+how support ZRTP configure as well.
+
+Because of some API changes (added destructors) clients must be compiled
+and linked with the new library.
+
+
+## GNU ZRTP 1.5.2 ##
+
+Quite a lot of enhancements:
+
+* a CMake based build process was added
+* a C wrapper was added to enable C programs to use GNU ZRTP
+* some fixes in the code (race condition solved)
+* better support of multi-stream mode
+* change the old cxx file extension to cpp, some build system don't
+ like the old cxx (Android NDK for example)
+* and much more
+
+Because of API changes clients must be compiled and linked with the new
+library.
+
+
+## GNU ZRTP 1.5.0 ##
+
+Adds a first version of a ZrtpConfigure class that provides applications
+to select which crypto and hash methods to use.
+
+Because of API changes clients must be compiled and linked with the new
+library.
+
+
+## GNU ZRTP 1.4.5 ##
+
+Modify the Hello repeat timer handling to accommodate slow connections and/or
+slow devices.
+
+Fix a problem when the other party sends only ZRTP packets at the beginning
+of a RTP session.
+
+
+### Interface changes in 1.4.5 ###
+
+No external interfaces were changed, external API and ABI remain stable.
+Internal interface modifications only to implement Ping/PingAck handling.
+
+
+## GNU ZRTP 1.4.4 ##
+
+Implement the Ping/PingAck packets and associated protocol extensions
+as defined in [RFC6189][].
+
+### Interface changes in 1.4.4 ###
+
+No external interfaces were changed, external API and ABI remain stable.
+Internal interface modifications only to implement Ping/PingAck handling.
+
+
+## GNU ZRTP 1.4.2 ##
+
+Introduce the Key Derivation Function (KDF) as defined in [RFC6189][]
+
+The ZRTP protocol version was updated to 1.10.
+
+### Interface changes in 1.4.2 ###
+
+No interfaces were changed, API and ABI remain stable.
+
+
+## GNU ZRTP 1.4.0 ##
+
+This is the first release that conforms to the ZRTP specification
+that eventually will become a [RFC6189][].
+
+The ZRTP protocol version was updated to 1.00.
+
+[RFC6189]: https://tools.ietf.org/html/rfc6189
+
+### Interface changes in 1.4.0 ###
+
+The ZrtpQueue and ZRtp classes implement a new method to get the other
+party's ZID (ZRTP identifier). An application, for example a SIP or XMPP
+client, may use this method to get the other party's ZID and store it
+together in a contact list. This enable the application to check the ZID
+if the user calls the other party again. A client shall implement such
+a feature to enhance security if user's don't compare the SAS on every
+call after they confirmed a SAS once.
+
+Clients must be compiled and linked with the new library.
+
+
+## GNU ZRTP 1.3.1 ##
+
+This is an update to version 1.3.0 and implements the ZRTP multi-stream
+mode handshake. The ZRTP protocl version was updated to 0.90 and
+interoperability tests using the latest Zfone build and Zfone Beta
+(dated September 6, 2008) were successful.
+
+No changes in the external API and ABI with respect to 1.3.0 - thus no
+recompile or rebuild of clients are necessary if they use 1.3.0.
+
+To checkout version 1.3.1 specify revision 494 (-r 494).
+
+
+## GNU ZRTP 1.3.0 ##
+
+This version is and update to version 1.1.0 an implements the latest
+changes define in the ZRTP draft. The changes resulted in an update of the
+API, therefore existing applications must be recompiled.
+
+This version of GNU ZRTP is compatible to and was tested to work with
+the latest Zfone beta (dated June, 10, see Zfone project site). Only
+in one specific error case is a slight incompatibility that will be
+fixed with the next Zfone beta. This incompatibility results in a
+severe error information at the client. The error only happens if
+someone modified the first retained shared secret entry in the
+retained secret cache, for example disk/storage read error. This is
+a very unlikely situation.
+
+### Interface changes in Version 1.3.0 ###
+
+The Method ''setSipsSecret(...)'' is no longer available. ZRTP does
+not support this additional secret anymore.
+
+The method ''setOtherSecret(...)'' was renamed to ''setPbxSecret(...)''
+to reflect the modification in the draft.
+
+The method ''setSrtpsSecret(...)'' was renamed to ''setAuxSecret(...)''
+to reflect the modification in the draft.
+
+
+## GNU ZRTP 1.1.0 ##
+
+GNU ZRTP 1.1.0 implements the basic ZRTP as specificied in the document
+''draft-zimmermann-avt-zrtp-06x''. You may access this document at[URL][]
+
+This version of GNU ZRTP does not support the additional featurs of ZRTP
+such as Multi-stream mode, Pre-shared mode, PBX enrollment, and SAS
+Signature. However, to keep the external interface as stable as
+possible I already implemented stubs for the additional features. Some
+later versions may have these features implemented, depending if they
+are required by the community.
+
+The current version of GNU ZRTP is compatible and was tested to work
+with the latest Zfone beta (dated April, 2nd) (see Zfone project
+site).
+
+[URL]: http://zfoneproject.com/zrtp_ietf.html
+
+### Interface changes ###
+
+The ''SymmetricZRTPSession'' implements some new methods to control
+ZRTP and its new features. An application usually uses only a few
+methods to setup GNU ZRTP. All others are optional and an application
+may use them only if it requires a special feature (which are not yet
+implemented :-) ).
+
+The ''ZrtpUserCallback'' class was modified as well. From an
+application's point of view
+
+ * The methods in ''ZrtpUserCallback'' are not pure virtual anymore
+ but just virtual and have a default implementation, usually a
+ simple return. An application may extend this class and overwrite
+ only those methods it requires.
+
+ * Change of the constructor - remove the queue parameter thus we have
+ a very simple standard constructor. This modifcation may requires a
+ small change in the application or class that uses or extends
+ ''ZrtpUserCallback''.
+
+ * The method showSAS has an additional parameter:
+
+ showSAS(std::string sas, bool verified);
+
+ the verified flag is set to true in SAS is verified, false if not verified.
+ This allows a more flexible support to display the SAS even if SAS is
+ verified. Formerly ZRTP did not call "showSAS()" if SAS was verified. Now
+ ZRTP always calls showSAS and provides the verification information
+ explicitly.
+
+* The signature of the following user callback methods was changed:
+
+ showMessage(GnuZrtpCodes::MessageSeverity sev, int32_t subCode)
+
+ zrtpNegotiationFailed(GnuZrtpCodes::MessageSeverity severity,
+ int32_t subCode)
+
+ The GNU ZRTP core and the ZRTP ccRTP extension do not contain
+ message strings anymore. Both use codes to inform an application
+ about events, problems or failure. The folder ''demo'' contains a
+ small demo program that shows one way how to map the codes to
+ strings. Delegating string handling and formating to the application
+ simplifies internationalization etc.
+
+Please note: some new callback methods and ''SymmetricZRTPSession''
+methods are only stubs in the current version. The real implementation
+(filling the stubs with real code) will be done some time later (see
+above about unsupported features).
+
+### Header files ###
+
+The new version greatly reduces the number of header files installed
+in the include directory. In the new version I decoupled the internal
+header files and implementation from the external classes and
+interfaces an application requires. Only six header files are
+installed in GNU ZRTP's include directory (libzrtpcpp subdirectory in
+the usual include paths)
+
+### Demo program ###
+
+The new folder ''demo'' contains a small demo program that shows
+various ways how to use GNU ZRTP to setup secure RTP (SRTP) sessions
+even without signaling protocols
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/README.md new/ZRTPCPP-4.6.2/README.md
--- old/ZRTPCPP-4.5.0/README.md 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/README.md 2016-02-04 16:32:31.000000000 +0100
@@ -30,7 +30,7 @@
**Note:** The Elliptic curves Cure25519 and Curve3617 are available only if you
select the crypto standalone mode during build.
-The newer verisons (starting with 4.1) implement an extensible mechanisms to
+The newer versions (starting with 4.1) implement an extensible mechanisms to
define algorithm selection policies that control selection of Hash, symmetric
cipher, and the SRTP authentication. Currently two policies exist: _Standard_
and _PreferNonNist_. The Standard policy selects algorihms based on the
@@ -39,6 +39,10 @@
(Diffie-Hellman) algorithm is also one of the non-NIST algorithms. This is
fully backward compatible and in-line with RFC6189.
+Refer to new [NEWS][] file for a summary of changes.
+
+[NEWS]: NEWS.md
+
### SDES support
This release also provides SDES support. The SDES implementation does not
support all of the fancy stuff but is usable in most cases. This implementation
@@ -62,7 +66,7 @@
non-existing pointers :-), thus I use some non-obvious array handling. If you
are interessted in the Java implementation of ZRTP then you may have a look
[here][javazrtp]. The Jitsi project uses the Java implementation. Jitsi is a
-powerfull communication client and is definitely worth a [look][jitsi].
+powerful communication client and is definitely worth a [look][jitsi].
To enable C based code to use ZRTP C++ I did a C wrapper that offers the same
functionality to C based RTP implementations. The first use of the ZRTP C
@@ -152,4 +156,4 @@
`Android.mk` generates `buildinfo_*.c` files in the root directory. You may
delete these files after the Android static libraries are ready.
-Since version 4.1.1 the example Android build files require NDK r9c.
+Since version 4.1.1 the example Android build files require NDK r9c or better.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/clients/tivi/CtZrtpSession.cpp new/ZRTPCPP-4.6.2/clients/tivi/CtZrtpSession.cpp
--- old/ZRTPCPP-4.5.0/clients/tivi/CtZrtpSession.cpp 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/clients/tivi/CtZrtpSession.cpp 2016-02-04 16:32:31.000000000 +0100
@@ -129,12 +129,12 @@
int iSZ;
char *opt;
int type;
- void zrtp_log( const char *tag, const char *buf);
int b32sas = 0, iDisableDH2K = 0, iDisableAES256 = 0, iPreferDH2K = 0;
int iDisableECDH256 = 0, iDisableECDH384 = 0, iEnableSHA384 = 1;
int iDisableSkein = 0, iDisableTwofish = 0, iPreferNIST = 0;
int iDisableSkeinHash = 0, iDisableBernsteinCurve25519 = 0, iDisableBernsteinCurve3617 = 0;
+ int iEnableDisclosure = 0;
GET_CFG_I(b32sas, "iDisable256SAS");
GET_CFG_I(iDisableAES256, "iDisableAES256");
@@ -151,6 +151,7 @@
GET_CFG_I(iDisableSkeinHash, "iDisableSkeinHash");
GET_CFG_I(iDisableBernsteinCurve25519, "iDisableBernsteinCurve25519");
GET_CFG_I(iDisableBernsteinCurve3617, "iDisableBernsteinCurve3617");
+ GET_CFG_I(iEnableDisclosure, "iEnableDisclosure");
conf->clear();
@@ -161,6 +162,10 @@
*/
conf->setSelectionPolicy(ZrtpConfigure::PreferNonNist);
+ // Set the Disclosure flag if the client SW has DR active.
+ if (iEnableDisclosure == 1)
+ conf->setDisclosureFlag(true);
+
/*
* Handling of iPreferNIST: if this is false (== 0) then we add the non-NIST algorithms
* to the configuration and place them in front of the NIST algorithms. Refer to RFC6189
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/clients/tivi/CtZrtpStream.cpp new/ZRTPCPP-4.6.2/clients/tivi/CtZrtpStream.cpp
--- old/ZRTPCPP-4.5.0/clients/tivi/CtZrtpStream.cpp 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/clients/tivi/CtZrtpStream.cpp 2016-02-04 16:32:31.000000000 +0100
@@ -71,7 +71,7 @@
}
// This function is static (could be global) to reduce visibility
-static void zrtp_log( const char *tag, const char *buf){
+/*static*/ void zrtp_log( const char *tag, const char *buf){
if(_zrtp_log_cb){
_zrtp_log_cb(pLogRet, tag, buf);
}
@@ -495,6 +495,7 @@
secState |= 0x100;
T_ZRTP_I("sec_state", secState);
+ T_ZRTP_I("peerDisclosureFlag", zrtpEngine->isPeerDisclosureFlag()? 1 : 0);
T_ZRTP_LB("buildInfo", zrtpBuildInfo);
// Compute Hello-hash info string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/zrtp/ZRtp.cpp new/ZRTPCPP-4.6.2/zrtp/ZRtp.cpp
--- old/ZRTPCPP-4.5.0/zrtp/ZRtp.cpp 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/zrtp/ZRtp.cpp 2016-02-04 16:32:31.000000000 +0100
@@ -80,7 +80,8 @@
callback(cb), dhContext(NULL), DHss(NULL), auxSecret(NULL), auxSecretLength(0), rs1Valid(false),
rs2Valid(false), msgShaContext(NULL), hash(NULL), cipher(NULL), pubKey(NULL), sasType(NULL), authLength(NULL),
multiStream(false), multiStreamAvailable(false), peerIsEnrolled(false), mitmSeen(false), pbxSecretTmp(NULL),
- enrollmentMode(false), configureAlgos(*config), zidRec(NULL), saveZidRecord(true), masterStream(NULL) {
+ enrollmentMode(false), configureAlgos(*config), zidRec(NULL), saveZidRecord(true), signSasSeen(false),
+ masterStream(NULL), peerDisclosureFlagSeen(false) {
#ifdef ZRTP_SAS_RELAY_SUPPORT
enableMitmEnrollment = config->isTrustedMitM();
@@ -796,6 +797,9 @@
if (zidRec->isSasVerified() && !paranoidMode) {
zrtpConfirm1.setSASFlag();
}
+ if (configureAlgos.isDisclosureFlag()) {
+ zrtpConfirm1.setDisclosureFlag();
+ }
zrtpConfirm1.setExpTime(0xFFFFFFFF);
zrtpConfirm1.setIv(randomIV);
zrtpConfirm1.setHashH0(H0);
@@ -924,6 +928,9 @@
// Fill in Confirm1 packet.
zrtpConfirm1.setMessageType((uint8_t*)Confirm1Msg);
+ if (configureAlgos.isDisclosureFlag()) {
+ zrtpConfirm1.setDisclosureFlag();
+ }
zrtpConfirm1.setExpTime(0xFFFFFFFF);
zrtpConfirm1.setIv(randomIV);
zrtpConfirm1.setHashH0(H0);
@@ -991,6 +998,10 @@
if (!sasFlag || paranoidMode) {
zidRec->resetSasVerified();
}
+
+ // Store the status of the Disclosure flag
+ peerDisclosureFlagSeen = confirm1->isDisclosureFlag();
+
// get verified flag from current RS1 before set a new RS1. This
// may not be set even if peer's flag is set in confirm1 message.
sasFlag = zidRec->isSasVerified();
@@ -1012,6 +1023,9 @@
if (sasFlag) {
zrtpConfirm2.setSASFlag();
}
+ if (configureAlgos.isDisclosureFlag()) {
+ zrtpConfirm2.setDisclosureFlag();
+ }
zrtpConfirm2.setExpTime(0xFFFFFFFF);
zrtpConfirm2.setIv(randomIV);
@@ -1122,8 +1136,14 @@
*errMsg = CriticalSWError;
return NULL;
}
+ // Store the status of the Disclosure flag
+ peerDisclosureFlagSeen = confirm1->isDisclosureFlag();
+
// now generate my Confirm2 message
zrtpConfirm2.setMessageType((uint8_t*)Confirm2Msg);
+ if (configureAlgos.isDisclosureFlag()) {
+ zrtpConfirm2.setDisclosureFlag();
+ }
zrtpConfirm2.setHashH0(H0);
zrtpConfirm2.setExpTime(0xFFFFFFFF);
zrtpConfirm2.setIv(randomIV);
@@ -1230,6 +1250,9 @@
return NULL;
}
}
+ // Store the status of the Disclosure flag
+ peerDisclosureFlagSeen = confirm2->isDisclosureFlag();
+
return &zrtpConf2Ack;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/zrtp/ZrtpCWrapper.cpp new/ZRTPCPP-4.6.2/zrtp/ZrtpCWrapper.cpp
--- old/ZRTPCPP-4.5.0/zrtp/ZrtpCWrapper.cpp 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/zrtp/ZrtpCWrapper.cpp 2016-02-04 16:32:31.000000000 +0100
@@ -213,7 +213,7 @@
}
void zrtp_setMultiStrParams(ZrtpContext* zrtpContext, char* parameters, int32_t length, ZrtpContext* master) {
- if (!zrtpContext || !zrtpContext->zrtpEngine)
+ if (!zrtpContext || !zrtpContext->zrtpEngine || !master)
return;
if (parameters == NULL)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/zrtp/ZrtpConfigure.cpp new/ZRTPCPP-4.6.2/zrtp/ZrtpConfigure.cpp
--- old/ZRTPCPP-4.5.0/zrtp/ZrtpConfigure.cpp 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/zrtp/ZrtpConfigure.cpp 2016-02-04 16:32:31.000000000 +0100
@@ -490,6 +490,14 @@
return enableParanoidMode;
}
+void ZrtpConfigure::setDisclosureFlag(bool yesNo) {
+ enableDisclosureFlag = yesNo;
+}
+
+bool ZrtpConfigure::isDisclosureFlag() {
+ return enableDisclosureFlag;
+}
+
#if 0
ZrtpConfigure config;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/zrtp/libzrtpcpp/ZRtp.h new/ZRTPCPP-4.6.2/zrtp/libzrtpcpp/ZRtp.h
--- old/ZRTPCPP-4.5.0/zrtp/libzrtpcpp/ZRtp.h 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/zrtp/libzrtpcpp/ZRtp.h 2016-02-04 16:32:31.000000000 +0100
@@ -692,6 +692,11 @@
*/
int32_t getZrtpRole() { return myRole; }
+ /**
+ * @brief Get status of our peer's disclosure flag
+ */
+ bool isPeerDisclosureFlag(){ return peerDisclosureFlagSeen; }
+
private:
typedef union _hashCtx {
SkeinCtx_t skeinCtx;
@@ -1022,7 +1027,7 @@
/**
* Save record
*
- * If false don't save record until user vrified and confirmed the SAS.
+ * If false don't save record until user verified and confirmed the SAS.
*/
bool saveZidRecord;
/**
@@ -1085,6 +1090,11 @@
bool paranoidMode;
/**
+ * Is true if the other peer sent a Disclosure flag in its Confirm packet.
+ */
+ bool peerDisclosureFlagSeen;
+
+ /**
* Find the best Hash algorithm that is offered in Hello.
*
* Find the best, that is the strongest, Hash algorithm that our peer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/zrtp/libzrtpcpp/ZrtpCWrapper.h new/ZRTPCPP-4.6.2/zrtp/libzrtpcpp/ZrtpCWrapper.h
--- old/ZRTPCPP-4.5.0/zrtp/libzrtpcpp/ZrtpCWrapper.h 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/zrtp/libzrtpcpp/ZrtpCWrapper.h 2016-02-04 16:32:31.000000000 +0100
@@ -843,7 +843,7 @@
* and restriction how and when to use multi-stream mode.
*
* @param zrtpContext
- * Pointer to the opaque ZrtpContext structure.
+ * Pointer to the opaque ZrtpContext structure of the master ZRTP session.
* @param length
* Pointer to an integer that receives the length of the char array
* @return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/zrtp/libzrtpcpp/ZrtpConfigure.h new/ZRTPCPP-4.6.2/zrtp/libzrtpcpp/ZrtpConfigure.h
--- old/ZRTPCPP-4.5.0/zrtp/libzrtpcpp/ZrtpConfigure.h 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/zrtp/libzrtpcpp/ZrtpConfigure.h 2016-02-04 16:32:31.000000000 +0100
@@ -515,6 +515,24 @@
*/
bool isParanoidMode();
+ /**
+ * Enables or disables setting of Disclosure flag.
+ *
+ * For further explanation of the disclosure flage refer to RFC6189, chaper 11
+ *
+ * @param yesNo
+ * If set to true then set the disclosure flag in confirm packets.
+ */
+ void setDisclosureFlag(bool yesNo);
+
+ /**
+ * Check if the protocol should set the disclosure flag.
+ *
+ * @return
+ * Returns true if disclosure falg should be set.
+ */
+ bool isDisclosureFlag();
+
/// Helper function to print some internal data
void printConfiguredAlgos(AlgoTypes algoTyp);
@@ -531,6 +549,7 @@
bool enableTrustedMitM;
bool enableSasSignature;
bool enableParanoidMode;
+ bool enableDisclosureFlag;
AlgorithmEnum& getAlgoAt(std::vector<AlgorithmEnum* >& a, int32_t index);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ZRTPCPP-4.5.0/zrtp/libzrtpcpp/ZrtpPacketConfirm.h new/ZRTPCPP-4.6.2/zrtp/libzrtpcpp/ZrtpPacketConfirm.h
--- old/ZRTPCPP-4.5.0/zrtp/libzrtpcpp/ZrtpPacketConfirm.h 2016-01-04 16:58:51.000000000 +0100
+++ new/ZRTPCPP-4.6.2/zrtp/libzrtpcpp/ZrtpPacketConfirm.h 2016-02-04 16:32:31.000000000 +0100
@@ -58,10 +58,13 @@
virtual ~ZrtpPacketConfirm();
/// Check if SAS verify flag is set
- const bool isSASFlag() { return (confirmHeader->flags & 0x4) == 0x4 ? true : false; }
+ const bool isSASFlag() { return (confirmHeader->flags & 0x4) == 0x4; }
+
+ /// Check if SAS verify flag is set
+ const bool isDisclosureFlag() { return (confirmHeader->flags & 0x4) == 0x1; }
/// Check if PBXEnrollment flag is set
- const bool isPBXEnrollment() { return (confirmHeader->flags & 0x8) == 0x8 ? true : false; }
+ const bool isPBXEnrollment() { return (confirmHeader->flags & 0x8) == 0x8; }
/// Get pointer to filler bytes (contains one bit of signature length)
const uint8_t* getFiller() { return confirmHeader->filler; }
@@ -92,6 +95,9 @@
/// set SAS verified flag
void setSASFlag() { confirmHeader->flags |= 0x4; }
+ /// set Disclosure flag
+ void setDisclosureFlag() { confirmHeader->flags |= 0x1; }
+
/// set setPBXEnrollment flag
void setPBXEnrollment() { confirmHeader->flags |= 0x8; }
1
0