--- Begin Message ---
Package: release.debian.org
User: release.debian....@packages.debian.org
Usertags: unblock
Dear release team,
Please consider unblocking redis 3:3.2.8-2 for stretch:
* It includes updates designated "upgrade urgency HIGH" by upstream.
* It fixes a (minor) cross-scripting attacking.
* It fixes some internal Debian packaging/systemd brokenness.
The relevant debian/changelog entries are:
redis (3:3.2.8-2) unstable; urgency=medium
* Avoid conflict between RuntimeDirectory and tmpfiles.d(5) both attempting
to create /run/redis with differing permissions.
This prevents an installation error on Jessie where /run/redis was first
being created by the tmpfiles.d(5) mechanism and then subsequently via the
RuntimeDirectory directive. Due to a bug in Jessie's systemd, this caused
a
package installation error as systemd was too strict about permissions if
the target already exists: <https://github.com/systemd/systemd/pull/896>
The redis-{server,sentinel} daemon would actually start successfully a few
milliseconds later due to the Restart=always directive.
We work around this this by dropping the tmpfiles.d(5) handling and moving
entirely to RuntimeDirectory{,Mode}; we are not using any special handling
requiring tmpfiles.d(5) and we appear to need RuntimeDirectory anyway for
#846350. (Closes: #856116)
-- Chris Lamb <la...@debian.org> Sat, 11 Mar 2017 12:53:14 +0000
redis (3:3.2.8-1) unstable; urgency=medium
* New upstream release.
-- Chris Lamb <la...@debian.org> Mon, 13 Feb 2017 10:15:53 +1300
redis (3:3.2.7-1) unstable; urgency=medium
* New upstream release.
-- Chris Lamb <la...@debian.org> Wed, 01 Feb 2017 09:27:05 +1300
redis (3:3.2.6-6) unstable; urgency=medium
* Use --cpu-list 0 (not --cpu-list 1) to ensure compilation on single-CPU
machines. (Closes: #852347)
-- Chris Lamb <la...@debian.org> Tue, 24 Jan 2017 11:59:02 +1300
redis (3:3.2.6-5) unstable; urgency=medium
* Re-add taskset calls to try and avoid FTBFS due to parallelism in upstream
test suite.
-- Chris Lamb <la...@debian.org> Mon, 23 Jan 2017 13:24:39 +1300
redis (3:3.2.6-4) unstable; urgency=medium
* Expand the documentation in redis-server.service and redis-sentinel
regarding the default hardening options.
-- Chris Lamb <la...@debian.org> Sat, 21 Jan 2017 11:21:33 +1100
redis (3:3.2.6-3) unstable; urgency=medium
* Don't ship a "duplicate" redis-server binary in redis-tools as
/usr/bin/redis-check-rdb (it checks argv to change its behaviour) by
replacing it with a symlink. Found by <https://dedup.debian.net/>.
-- Chris Lamb <la...@debian.org> Wed, 11 Jan 2017 17:04:33 +0000
redis (3:3.2.6-2) unstable; urgency=medium
* Rename RunTimeDirectory -> RuntimeDirectory in .service files.
(Closes: #850534)
* Refresh all patches with pq import -> pq export.
* Tidy all patches, updating descriptions and use Pq-Topic to organise.
-- Chris Lamb <la...@debian.org> Sat, 07 Jan 2017 18:06:14 +0000
The full diffoscope diff is attached; note there very little actual change
to the code.
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` la...@debian.org / chris-lamb.co.uk
`-
--- /tmp/what-changed.redis.k9cqt5gv.a
+++ /tmp/what-changed.redis.77r9sp72.b
âââ file list
â @@ -7,38 +7,39 @@
â redis/.pc/0001-fix-ftbfs-on-kfreebsd.patch
â redis/.pc/0001-fix-ftbfs-on-kfreebsd.patch/deps
â redis/.pc/0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis
â redis/.pc/0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis/net.c
â redis/.pc/0002-fix-ftbfs-on-kfreebsd.patch
â redis/.pc/0002-fix-ftbfs-on-kfreebsd.patch/src
â redis/.pc/0002-fix-ftbfs-on-kfreebsd.patch/src/fmacros.h
â -redis/.pc/0003-use-system-jemalloc.patch
â -redis/.pc/0003-use-system-jemalloc.patch/src
â -redis/.pc/0003-use-system-jemalloc.patch/src/Makefile
â -redis/.pc/0003-use-system-jemalloc.patch/src/debug.c
â -redis/.pc/0003-use-system-jemalloc.patch/src/zmalloc.c
â -redis/.pc/0003-use-system-jemalloc.patch/src/zmalloc.h
â -redis/.pc/0004-dpkg-buildflags.patch
â -redis/.pc/0004-dpkg-buildflags.patch/deps
â -redis/.pc/0004-dpkg-buildflags.patch/deps/hiredis
â -redis/.pc/0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â -redis/.pc/0004-dpkg-buildflags.patch/deps/linenoise
â -redis/.pc/0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â -redis/.pc/0004-dpkg-buildflags.patch/src
â -redis/.pc/0004-dpkg-buildflags.patch/src/Makefile
â redis/.pc/0005-SOURCE_DATE_EPOCH.patch
â redis/.pc/0005-SOURCE_DATE_EPOCH.patch/src
â redis/.pc/0005-SOURCE_DATE_EPOCH.patch/src/mkreleasehdr.sh
â -redis/.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â
-redis/.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â
-redis/.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â -redis/.pc/0008-Drop-tests-with-timing-issues.patch
â -redis/.pc/0008-Drop-tests-with-timing-issues.patch/tests
â -redis/.pc/0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â redis/.pc/applied-patches
â +redis/.pc/debian-packaging
â +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch
â +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch/src
â +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch/src/Makefile
â +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch/src/debug.c
â +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.c
â +redis/.pc/debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.h
â +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch
â +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/deps
â +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis
â +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise
â
+redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/src
â +redis/.pc/debian-packaging/0004-dpkg-buildflags.patch/src/Makefile
â
+redis/.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â
+redis/.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â
+redis/.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â +redis/.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch
â +redis/.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests
â
+redis/.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â redis/00-RELEASENOTES
â redis/BUGS
â redis/CONTRIBUTING
â redis/COPYING
â redis/INSTALL
â redis/MANIFESTO
â redis/Makefile
â @@ -53,44 +54,44 @@
â redis/debian/compat
â redis/debian/control
â redis/debian/copyright
â redis/debian/gbp.conf
â redis/debian/patches
â redis/debian/patches/0001-fix-ftbfs-on-kfreebsd.patch
â redis/debian/patches/0002-fix-ftbfs-on-kfreebsd.patch
â -redis/debian/patches/0003-use-system-jemalloc.patch
â -redis/debian/patches/0004-dpkg-buildflags.patch
â redis/debian/patches/0005-SOURCE_DATE_EPOCH.patch
â
-redis/debian/patches/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â -redis/debian/patches/0008-Drop-tests-with-timing-issues.patch
â +redis/debian/patches/debian-packaging
â +redis/debian/patches/debian-packaging/0003-use-system-jemalloc.patch
â +redis/debian/patches/debian-packaging/0004-dpkg-buildflags.patch
â
+redis/debian/patches/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â
+redis/debian/patches/debian-packaging/0008-Drop-tests-with-timing-issues.patch
â redis/debian/patches/series
â redis/debian/redis-benchmark.1
â redis/debian/redis-cli.1
â redis/debian/redis-sentinel.default
â redis/debian/redis-sentinel.init
â redis/debian/redis-sentinel.install
â redis/debian/redis-sentinel.links
â redis/debian/redis-sentinel.logrotate
â redis/debian/redis-sentinel.postinst
â redis/debian/redis-sentinel.postrm
â redis/debian/redis-sentinel.service
â -redis/debian/redis-sentinel.tmpfile
â redis/debian/redis-server.1
â redis/debian/redis-server.default
â redis/debian/redis-server.docs
â redis/debian/redis-server.init
â redis/debian/redis-server.install
â redis/debian/redis-server.logrotate
â redis/debian/redis-server.manpages
â redis/debian/redis-server.postinst
â redis/debian/redis-server.postrm
â redis/debian/redis-server.service
â -redis/debian/redis-server.tmpfile
â redis/debian/redis-tools.examples
â redis/debian/redis-tools.install
â +redis/debian/redis-tools.links
â redis/debian/redis-tools.manpages
â redis/debian/redis.conf
â redis/debian/rules
â redis/debian/sentinel.conf
â redis/debian/source
â redis/debian/source/format
â redis/debian/source/options
â @@ -696,10 +697,10 @@
â redis/utils/releasetools
â redis/utils/releasetools/01_create_tarball.sh
â redis/utils/releasetools/02_upload_tarball.sh
â redis/utils/releasetools/03_test_release.sh
â redis/utils/releasetools/04_release_hash.sh
â redis/utils/speed-regression.tcl
â redis/utils/whatisdoing.sh
â -redis_3.2.6-1.debian.tar.xz
â -redis_3.2.6-1.dsc
â -redis_3.2.6.orig.tar.gz
â +redis_3.2.8-2.debian.tar.xz
â +redis_3.2.8-2.dsc
â +redis_3.2.8.orig.tar.gz
âââ redis
âââ file list
â â @@ -6,38 +6,39 @@
â â .pc/0001-fix-ftbfs-on-kfreebsd.patch
â â .pc/0001-fix-ftbfs-on-kfreebsd.patch/deps
â â .pc/0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis
â â .pc/0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis/net.c
â â .pc/0002-fix-ftbfs-on-kfreebsd.patch
â â .pc/0002-fix-ftbfs-on-kfreebsd.patch/src
â â .pc/0002-fix-ftbfs-on-kfreebsd.patch/src/fmacros.h
â â -.pc/0003-use-system-jemalloc.patch
â â -.pc/0003-use-system-jemalloc.patch/src
â â -.pc/0003-use-system-jemalloc.patch/src/Makefile
â â -.pc/0003-use-system-jemalloc.patch/src/debug.c
â â -.pc/0003-use-system-jemalloc.patch/src/zmalloc.c
â â -.pc/0003-use-system-jemalloc.patch/src/zmalloc.h
â â -.pc/0004-dpkg-buildflags.patch
â â -.pc/0004-dpkg-buildflags.patch/deps
â â -.pc/0004-dpkg-buildflags.patch/deps/hiredis
â â -.pc/0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â â -.pc/0004-dpkg-buildflags.patch/deps/linenoise
â â -.pc/0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â â -.pc/0004-dpkg-buildflags.patch/src
â â -.pc/0004-dpkg-buildflags.patch/src/Makefile
â â .pc/0005-SOURCE_DATE_EPOCH.patch
â â .pc/0005-SOURCE_DATE_EPOCH.patch/src
â â .pc/0005-SOURCE_DATE_EPOCH.patch/src/mkreleasehdr.sh
â â -.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â
-.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â â
-.pc/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â â -.pc/0008-Drop-tests-with-timing-issues.patch
â â -.pc/0008-Drop-tests-with-timing-issues.patch/tests
â â -.pc/0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â â .pc/applied-patches
â â +.pc/debian-packaging
â â +.pc/debian-packaging/0003-use-system-jemalloc.patch
â â +.pc/debian-packaging/0003-use-system-jemalloc.patch/src
â â +.pc/debian-packaging/0003-use-system-jemalloc.patch/src/Makefile
â â +.pc/debian-packaging/0003-use-system-jemalloc.patch/src/debug.c
â â +.pc/debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.c
â â +.pc/debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.h
â â +.pc/debian-packaging/0004-dpkg-buildflags.patch
â â +.pc/debian-packaging/0004-dpkg-buildflags.patch/deps
â â +.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis
â â +.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â â +.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise
â â +.pc/debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â â +.pc/debian-packaging/0004-dpkg-buildflags.patch/src
â â +.pc/debian-packaging/0004-dpkg-buildflags.patch/src/Makefile
â â
+.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â
+.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â â
+.pc/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â â +.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch
â â +.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests
â â
+.pc/debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â â 00-RELEASENOTES
â â BUGS
â â CONTRIBUTING
â â COPYING
â â INSTALL
â â MANIFESTO
â â Makefile
â â @@ -52,44 +53,44 @@
â â debian/compat
â â debian/control
â â debian/copyright
â â debian/gbp.conf
â â debian/patches
â â debian/patches/0001-fix-ftbfs-on-kfreebsd.patch
â â debian/patches/0002-fix-ftbfs-on-kfreebsd.patch
â â -debian/patches/0003-use-system-jemalloc.patch
â â -debian/patches/0004-dpkg-buildflags.patch
â â debian/patches/0005-SOURCE_DATE_EPOCH.patch
â â
-debian/patches/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â -debian/patches/0008-Drop-tests-with-timing-issues.patch
â â +debian/patches/debian-packaging
â â +debian/patches/debian-packaging/0003-use-system-jemalloc.patch
â â +debian/patches/debian-packaging/0004-dpkg-buildflags.patch
â â
+debian/patches/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â
+debian/patches/debian-packaging/0008-Drop-tests-with-timing-issues.patch
â â debian/patches/series
â â debian/redis-benchmark.1
â â debian/redis-cli.1
â â debian/redis-sentinel.default
â â debian/redis-sentinel.init
â â debian/redis-sentinel.install
â â debian/redis-sentinel.links
â â debian/redis-sentinel.logrotate
â â debian/redis-sentinel.postinst
â â debian/redis-sentinel.postrm
â â debian/redis-sentinel.service
â â -debian/redis-sentinel.tmpfile
â â debian/redis-server.1
â â debian/redis-server.default
â â debian/redis-server.docs
â â debian/redis-server.init
â â debian/redis-server.install
â â debian/redis-server.logrotate
â â debian/redis-server.manpages
â â debian/redis-server.postinst
â â debian/redis-server.postrm
â â debian/redis-server.service
â â -debian/redis-server.tmpfile
â â debian/redis-tools.examples
â â debian/redis-tools.install
â â +debian/redis-tools.links
â â debian/redis-tools.manpages
â â debian/redis.conf
â â debian/rules
â â debian/sentinel.conf
â â debian/source
â â debian/source/format
â â debian/source/options
âââ .pc
âââ file list
â â â @@ -4,31 +4,32 @@
â â â 0001-fix-ftbfs-on-kfreebsd.patch
â â â 0001-fix-ftbfs-on-kfreebsd.patch/deps
â â â 0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis
â â â 0001-fix-ftbfs-on-kfreebsd.patch/deps/hiredis/net.c
â â â 0002-fix-ftbfs-on-kfreebsd.patch
â â â 0002-fix-ftbfs-on-kfreebsd.patch/src
â â â 0002-fix-ftbfs-on-kfreebsd.patch/src/fmacros.h
â â â -0003-use-system-jemalloc.patch
â â â -0003-use-system-jemalloc.patch/src
â â â -0003-use-system-jemalloc.patch/src/Makefile
â â â -0003-use-system-jemalloc.patch/src/debug.c
â â â -0003-use-system-jemalloc.patch/src/zmalloc.c
â â â -0003-use-system-jemalloc.patch/src/zmalloc.h
â â â -0004-dpkg-buildflags.patch
â â â -0004-dpkg-buildflags.patch/deps
â â â -0004-dpkg-buildflags.patch/deps/hiredis
â â â -0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â â â -0004-dpkg-buildflags.patch/deps/linenoise
â â â -0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â â â -0004-dpkg-buildflags.patch/src
â â â -0004-dpkg-buildflags.patch/src/Makefile
â â â 0005-SOURCE_DATE_EPOCH.patch
â â â 0005-SOURCE_DATE_EPOCH.patch/src
â â â 0005-SOURCE_DATE_EPOCH.patch/src/mkreleasehdr.sh
â â â -0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â â
-0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â â â
-0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â â â -0008-Drop-tests-with-timing-issues.patch
â â â -0008-Drop-tests-with-timing-issues.patch/tests
â â â -0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
â â â -applied-patches
â â â +applied-patches
â â â +debian-packaging
â â â +debian-packaging/0003-use-system-jemalloc.patch
â â â +debian-packaging/0003-use-system-jemalloc.patch/src
â â â +debian-packaging/0003-use-system-jemalloc.patch/src/Makefile
â â â +debian-packaging/0003-use-system-jemalloc.patch/src/debug.c
â â â +debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.c
â â â +debian-packaging/0003-use-system-jemalloc.patch/src/zmalloc.h
â â â +debian-packaging/0004-dpkg-buildflags.patch
â â â +debian-packaging/0004-dpkg-buildflags.patch/deps
â â â +debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis
â â â +debian-packaging/0004-dpkg-buildflags.patch/deps/hiredis/Makefile
â â â +debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise
â â â +debian-packaging/0004-dpkg-buildflags.patch/deps/linenoise/Makefile
â â â +debian-packaging/0004-dpkg-buildflags.patch/src
â â â +debian-packaging/0004-dpkg-buildflags.patch/src/Makefile
â â â
+debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â â
+debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests
â â â
+debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch/tests/test_helper.tcl
â â â +debian-packaging/0008-Drop-tests-with-timing-issues.patch
â â â +debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests
â â â
+debian-packaging/0008-Drop-tests-with-timing-issues.patch/tests/test_helper.tcl
âââ stat {}
â â â @@ -1,8 +1,8 @@
â â â
â â â Size: 4096 Blocks: 8 IO Block: 4096 directory
â â â -Links: 9
â â â +Links: 6
â â â Access: (0755/drwxr-xr-x) Uid: ( 1000/ lamby) Gid: ( 1000/
lamby)
â â â
â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â
â â â Birth: -
âââ applied-patches
â â â @@ -1,7 +1,7 @@
â â â 0001-fix-ftbfs-on-kfreebsd.patch
â â â 0002-fix-ftbfs-on-kfreebsd.patch
â â â -0003-use-system-jemalloc.patch
â â â -0004-dpkg-buildflags.patch
â â â +debian-packaging/0003-use-system-jemalloc.patch
â â â +debian-packaging/0004-dpkg-buildflags.patch
â â â 0005-SOURCE_DATE_EPOCH.patch
â â â -0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â â -0008-Drop-tests-with-timing-issues.patch
â â â
+debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â â +debian-packaging/0008-Drop-tests-with-timing-issues.patch
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 258 Blocks: 8 IO Block: 4096
regular file
â â â â + Size: 326 Blocks: 8 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ stat {}
â â â @@ -1,8 +1,8 @@
â â â
â â â Size: 4096 Blocks: 8 IO Block: 4096 directory
â â â -Links: 9
â â â +Links: 6
â â â Access: (0755/drwxr-xr-x) Uid: ( 1000/ lamby) Gid: ( 1000/
lamby)
â â â
â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â
â â â Birth: -
âââ 00-RELEASENOTES
â â @@ -7,14 +7,138 @@
â â LOW: No need to upgrade unless there are new features you want to
use.
â â MODERATE: Program an upgrade of the server, but it's not urgent.
â â HIGH: There is a critical bug that may affect a subset of users.
Upgrade!
â â CRITICAL: There is a critical bug affecting MOST USERS. Upgrade ASAP.
â â
--------------------------------------------------------------------------------
â â
â â
================================================================================
â â +Redis 3.2.8 Released Sun Feb 12 16:11:18 CET 2017
â â
+================================================================================
â â +
â â +Upgrade urgency CRITICAL: This release reverts back the Jemalloc
upgrade
â â + that is believed to potentially cause a
server
â â + deadlock. A MIGRATE crash is also fixed.
â â +
â â +Two important bug fixes, the first of one is critical:
â â +
â â +1. Apparently Jemalloc 4.4.0 may contain a deadlock under particular
â â + conditions. See https://github.com/antirez/redis/issues/3799.
â â + We reverted back to the previously used Jemalloc versions and plan
â â + to upgrade Jemalloc again after having more info about the
â â + cause of the bug.
â â +
â â +2. MIGRATE could crash the server after a socket error. See for
reference:
â â + https://github.com/antirez/redis/issues/3796.
â â +
â â +List of commits:
â â +
â â +antirez in commit 7178cac:
â â + Revert "Jemalloc updated to 4.4.0."
â â + 150 files changed, 6330 insertions(+), 17245 deletions(-)
â â +
â â +antirez in commit 33fad43:
â â + Fix MIGRATE closing of cached socket on error.
â â + 1 file changed, 23 insertions(+), 6 deletions(-)
â â +
â â
+================================================================================
â â +Redis 3.2.7 Released Tue Jan 31 16:21:41 CET 2017
â â
+================================================================================
â â +
â â +Upgrade urgency HIGH: This release fixes important security and
correctness
â â + issues. It is especially important to upgrade
for Redis
â â + Cluster users and for users running Redis in
their laptop
â â + since a cross-scripting attack is fixed in this
release.
â â +
â â +Main bugs fixes and improvements in this release:
â â +
â â +1. MIGRATE could incorrectly move keys between Redis Cluster nodes by
turning
â â + keys with an expire set into persisting keys. This bug was
introduced with
â â + the multiple-keys migration recently. It is now fixed. Only applies
to
â â + Redis Cluster users that use the resharding features of Redis
Cluster.
â â +
â â +2. As Redis 4.0 beta and the unstable branch already did (for some
months at
â â + this point), Redis 3.2.7 also aliases the Host: and POST commands
to QUIT
â â + avoiding to process the remaining pipeline if there are pending
commands.
â â + This is a security protection against a "Cross Scripting" attack,
that
â â + usually involves trying to feed Redis with HTTP in order to execute
commands.
â â + Example: a developer is running a local copy of Redis for
development
â â + purposes. She also runs a web browser in the same computer. The web
browser
â â + could send an HTTP request to http://127.0.0.1:6379 in order to
access the
â â + Redis instance, since a specially crafted HTTP requesta may also be
partially
â â + valid Redis protocol. However if POST and Host: break the
connection, this
â â + problem should be avoided. IMPORTANT: It is important to realize
that it
â â + is not impossible that another way will be found to talk with a
localhost
â â + Redis using a Cross Protocol attack not involving sending POST or
Host: so
â â + this is only a layer of protection but not a definitive fix for
this class
â â + of issues.
â â +
â â +3. A ziplist bug that could cause data corruption, could crash the
server and
â â + MAY ALSO HAVE SECURITY IMPLICATIONS was fixed. The bug looks
complex to
â â + exploit, but attacks always get worse, never better (cit). The bug
is very
â â + very hard to catch in practice, it required manual analysis of the
ziplist
â â + code in order to be found. However it is also possible that rarely
it
â â + happened in the wild. Upgrading is required if you use LINSERT and
other
â â + in-the-middle list manipulation commands.
â â +
â â +4. We upgraded to Jemalloc 4.4.0 since the version we used to ship
with Redis
â â + was an early 4.0 release of Jemalloc. This version may have several
â â + improvements including the ability to better reclaim/use the memory
of
â â + system.
â â +
â â +The following is the list of commits:
â â +
â â +antirez in commit 3876d98:
â â + Ziplist: insertion bug under particular conditions fixed.
â â + 1 file changed, 9 insertions(+), 1 deletion(-)
â â +
â â +antirez in commit 153f2f0:
â â + Jemalloc updated to 4.4.0.
â â + 150 files changed, 17271 insertions(+), 6356 deletions(-)
â â +
â â +miter in commit ca532c9:
â â + Change switch statment to if statment
â â + 1 file changed, 2 insertions(+), 4 deletions(-)
â â +
â â +oranagra in commit a735035:
â â + fix rare assertion in DEBUG DIGEST
â â + 1 file changed, 1 insertion(+), 1 deletion(-)
â â +
â â +Itamar Haber in commit b917e3f:
â â + Verify pairs are provided after subcommands
â â + 1 file changed, 1 insertion(+), 1 deletion(-)
â â +
â â +antirez in commit 1177cf6:
â â + Avoid geo.c warning in initialization.
â â + 1 file changed, 1 insertion(+), 1 deletion(-)
â â +
â â +antirez in commit 874804d:
â â + Security: Cross Protocol Scripting protection.
â â + 3 files changed, 27 insertions(+), 2 deletions(-)
â â +
â â +antirez in commit 273cd7f:
â â + Ziplist: remove static from functions, they prevent good crash
reports.
â â + 1 file changed, 14 insertions(+), 14 deletions(-)
â â +
â â +Jan-Erik Rediger in commit 389b9f5:
â â + Initialize help only in repl mode
â â + 1 file changed, 5 insertions(+), 5 deletions(-)
â â +
â â +Yossi Gottlieb in commit 1370a88:
â â + Fix redis-cli rare crash.
â â + 1 file changed, 4 insertions(+)
â â +
â â +antirez in commit 68aab8e:
â â + MIGRATE: Remove upfront ttl initialization.
â â + 1 file changed, 3 insertions(+), 4 deletions(-)
â â +
â â +Jan-Erik Rediger in commit 788e892:
â â + Reset the ttl for additional keys
â â + 1 file changed, 1 insertion(+)
â â +
â â
+================================================================================
â â Redis 3.2.6 Released Tue Dec 06 09:33:29 CET 2016
â â
================================================================================
â â
â â Upgrade urgency MODERATE: GEORADIUS, BITFIELD and Redis Cluster minor
fixes.
â â
â â This release mainly fixes three bugs:
âââ stat {}
â â â @@ -1,8 +1,8 @@
â â â
â â â - Size: 80406 Blocks: 160 IO Block: 4096 regular file
â â â + Size: 85775 Blocks: 168 IO Block: 4096 regular file
â â â Links: 1
â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: ( 1000/
lamby)
â â â
â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â
â â â Birth: -
âââ debian
âââ file list
â â â @@ -7,44 +7,44 @@
â â â compat
â â â control
â â â copyright
â â â gbp.conf
â â â patches
â â â patches/0001-fix-ftbfs-on-kfreebsd.patch
â â â patches/0002-fix-ftbfs-on-kfreebsd.patch
â â â -patches/0003-use-system-jemalloc.patch
â â â -patches/0004-dpkg-buildflags.patch
â â â patches/0005-SOURCE_DATE_EPOCH.patch
â â â
-patches/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â â -patches/0008-Drop-tests-with-timing-issues.patch
â â â +patches/debian-packaging
â â â +patches/debian-packaging/0003-use-system-jemalloc.patch
â â â +patches/debian-packaging/0004-dpkg-buildflags.patch
â â â
+patches/debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â â +patches/debian-packaging/0008-Drop-tests-with-timing-issues.patch
â â â patches/series
â â â redis-benchmark.1
â â â redis-cli.1
â â â redis-sentinel.default
â â â redis-sentinel.init
â â â redis-sentinel.install
â â â redis-sentinel.links
â â â redis-sentinel.logrotate
â â â redis-sentinel.postinst
â â â redis-sentinel.postrm
â â â redis-sentinel.service
â â â -redis-sentinel.tmpfile
â â â redis-server.1
â â â redis-server.default
â â â redis-server.docs
â â â redis-server.init
â â â redis-server.install
â â â redis-server.logrotate
â â â redis-server.manpages
â â â redis-server.postinst
â â â redis-server.postrm
â â â redis-server.service
â â â -redis-server.tmpfile
â â â redis-tools.examples
â â â redis-tools.install
â â â +redis-tools.links
â â â redis-tools.manpages
â â â redis.conf
â â â rules
â â â sentinel.conf
â â â source
â â â source/format
â â â source/options
âââ changelog
â â â @@ -1,7 +1,78 @@
â â â +redis (3:3.2.8-2) unstable; urgency=medium
â â â +
â â â + * Avoid conflict between RuntimeDirectory and tmpfiles.d(5) both
attempting
â â â + to create /run/redis with differing permissions.
â â â +
â â â + This prevents an installation error on Jessie where /run/redis
was first
â â â + being created by the tmpfiles.d(5) mechanism and then
subsequently via the
â â â + RuntimeDirectory directive. Due to a bug in Jessie's systemd,
this caused a
â â â + package installation error as systemd was too strict about
permissions if
â â â + the target already exists:
<https://github.com/systemd/systemd/pull/896>
â â â +
â â â + The redis-{server,sentinel} daemon would actually start
successfully a few
â â â + milliseconds later due to the Restart=always directive.
â â â +
â â â + We work around this this by dropping the tmpfiles.d(5)
handling and moving
â â â + entirely to RuntimeDirectory{,Mode}; we are not using any
special handling
â â â + requiring tmpfiles.d(5) and we appear to need RuntimeDirectory
anyway for
â â â + #846350. (Closes: #856116)
â â â +
â â â + -- Chris Lamb <la...@debian.org> Sat, 11 Mar 2017 12:53:14 +0000
â â â +
â â â +redis (3:3.2.8-1) unstable; urgency=medium
â â â +
â â â + * New upstream release.
â â â +
â â â + -- Chris Lamb <la...@debian.org> Mon, 13 Feb 2017 10:15:53 +1300
â â â +
â â â +redis (3:3.2.7-1) unstable; urgency=medium
â â â +
â â â + * New upstream release.
â â â +
â â â + -- Chris Lamb <la...@debian.org> Wed, 01 Feb 2017 09:27:05 +1300
â â â +
â â â +redis (3:3.2.6-6) unstable; urgency=medium
â â â +
â â â + * Use --cpu-list 0 (not --cpu-list 1) to ensure compilation on
single-CPU
â â â + machines. (Closes: #852347)
â â â +
â â â + -- Chris Lamb <la...@debian.org> Tue, 24 Jan 2017 11:59:02 +1300
â â â +
â â â +redis (3:3.2.6-5) unstable; urgency=medium
â â â +
â â â + * Re-add taskset calls to try and avoid FTBFS due to parallelism
in upstream
â â â + test suite.
â â â +
â â â + -- Chris Lamb <la...@debian.org> Mon, 23 Jan 2017 13:24:39 +1300
â â â +
â â â +redis (3:3.2.6-4) unstable; urgency=medium
â â â +
â â â + * Expand the documentation in redis-server.service and
redis-sentinel
â â â + regarding the default hardening options.
â â â +
â â â + -- Chris Lamb <la...@debian.org> Sat, 21 Jan 2017 11:21:33 +1100
â â â +
â â â +redis (3:3.2.6-3) unstable; urgency=medium
â â â +
â â â + * Don't ship a "duplicate" redis-server binary in redis-tools as
â â â + /usr/bin/redis-check-rdb (it checks argv to change its
behaviour) by
â â â + replacing it with a symlink. Found by
<https://dedup.debian.net/>.
â â â +
â â â + -- Chris Lamb <la...@debian.org> Wed, 11 Jan 2017 17:04:33 +0000
â â â +
â â â +redis (3:3.2.6-2) unstable; urgency=medium
â â â +
â â â + * Rename RunTimeDirectory -> RuntimeDirectory in .service files.
â â â + (Closes: #850534)
â â â + * Refresh all patches with pq import -> pq export.
â â â + * Tidy all patches, updating descriptions and use Pq-Topic to
organise.
â â â +
â â â + -- Chris Lamb <la...@debian.org> Sat, 07 Jan 2017 18:06:14 +0000
â â â +
â â â redis (3:3.2.6-1) unstable; urgency=medium
â â â
â â â * New upstream release.
â â â * Add debian/gbp.conf to reflect new repository layout.
â â â
â â â -- Chris Lamb <la...@debian.org> Tue, 06 Dec 2016 09:23:20 +0000
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 35243 Blocks: 72 IO Block: 4096
regular file
â â â â + Size: 37877 Blocks: 80 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ patches
âââ file list
â â â â @@ -1,8 +1,9 @@
â â â â 0001-fix-ftbfs-on-kfreebsd.patch
â â â â 0002-fix-ftbfs-on-kfreebsd.patch
â â â â -0003-use-system-jemalloc.patch
â â â â -0004-dpkg-buildflags.patch
â â â â 0005-SOURCE_DATE_EPOCH.patch
â â â â -0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â â â -0008-Drop-tests-with-timing-issues.patch
â â â â +debian-packaging
â â â â +debian-packaging/0003-use-system-jemalloc.patch
â â â â +debian-packaging/0004-dpkg-buildflags.patch
â â â â
+debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â â â +debian-packaging/0008-Drop-tests-with-timing-issues.patch
â â â â series
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â Size: 4096 Blocks: 8 IO Block: 4096
directory
â â â â -Links: 2
â â â â +Links: 3
â â â â Access: (0755/drwxr-xr-x) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ 0001-fix-ftbfs-on-kfreebsd.patch
â â â â @@ -1,21 +1,21 @@
â â â â From: Chris Lamb <la...@debian.org>
â â â â Date: Fri, 30 Oct 2015 10:53:42 +0000
â â â â -Subject: fix-ftbfs-on-kfreebsd
â â â â +Subject: Fix FTBFS on kfreebsd
â â â â
â â â â -# Description: Fix FTBFS on kfreebsd
â â â â -# Bug: https://github.com/redis/hiredis/pull/254
â â â â -# Bug-Debian:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=754634
â â â â -# Author: Chris Lamb <la...@debian.org>
â â â â +Filed and fixed upstream as
<https://github.com/redis/hiredis/pull/254>, but
â â â â +the embedded code copy of hiredis in redis has not been
updated.
â â â â +
â â â â +Debian bug: #754634
â â â â ---
â â â â deps/hiredis/net.c | 2 +-
â â â â 1 file changed, 1 insertion(+), 1 deletion(-)
â â â â
â â â â diff --git a/deps/hiredis/net.c b/deps/hiredis/net.c
â â â â -index bdb84ce..ff4e77f 100644
â â â â +index bdb84cee..ff4e77f1 100644
â â â â --- a/deps/hiredis/net.c
â â â â +++ b/deps/hiredis/net.c
â â â â @@ -138,7 +138,7 @@ int redisKeepAlive(redisContext *c, int
interval) {
â â â â return REDIS_ERR;
â â â â }
â â â â #else
â â â â -#ifndef __sun
âââ stat {}
â â â â â @@ -1,8 +1,8 @@
â â â â â
â â â â â - Size: 857 Blocks: 8 IO Block: 4096
regular file
â â â â â + Size: 826 Blocks: 8 IO Block: 4096
regular file
â â â â â Links: 1
â â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â â
â â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â â
â â â â â Birth: -
âââ 0002-fix-ftbfs-on-kfreebsd.patch
â â â â @@ -1,21 +1,20 @@
â â â â -From: Chris Lamb <la...@debian.org>
â â â â +From: Christoph Egger <christ...@debian.org>
â â â â Date: Fri, 30 Oct 2015 10:53:42 +0000
â â â â -Subject: fix-ftbfs-on-kfreebsd
â â â â +Subject: Fix FTBFS on kfreebsd
â â â â
â â â â -# Description: Fix FTBFS on kfreebsd
â â â â -# Bug: https://github.com/antirez/redis/pull/67
â â â â -# Bug-Debian:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=632499
â â â â -# Author: Christoph Egger <christ...@debian.org>
â â â â +Filed upstream as <https://github.com/antirez/redis/pull/67>.
â â â â +
â â â â +Debian bug: #632499
â â â â ---
â â â â src/fmacros.h | 2 +-
â â â â 1 file changed, 1 insertion(+), 1 deletion(-)
â â â â
â â â â diff --git a/src/fmacros.h b/src/fmacros.h
â â â â -index 6e56c75..d490aec 100644
â â â â +index 6e56c759..d490aec2 100644
â â â â --- a/src/fmacros.h
â â â â +++ b/src/fmacros.h
â â â â @@ -41,7 +41,7 @@
â â â â #define _ALL_SOURCE
â â â â #endif
â â â â
â â â â -#if defined(__linux__) || defined(__OpenBSD__)
âââ stat {}
â â â â â @@ -1,8 +1,8 @@
â â â â â
â â â â â - Size: 753 Blocks: 8 IO Block: 4096
regular file
â â â â â + Size: 643 Blocks: 8 IO Block: 4096
regular file
â â â â â Links: 1
â â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â â
â â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â â
â â â â â Birth: -
âââ 0005-SOURCE_DATE_EPOCH.patch
â â â â @@ -1,17 +1,18 @@
â â â â From: Chris Lamb <la...@debian.org>
â â â â Date: Wed, 6 Jan 2016 11:23:26 +0000
â â â â -Subject: SOURCE_DATE_EPOCH
â â â â +Subject: Add support for SOURCE_DATE_EPOCH.
â â â â
â â â â +Filed upstream as <https://github.com/antirez/redis/pull/2992>.
â â â â ---
â â â â src/mkreleasehdr.sh | 3 +++
â â â â 1 file changed, 3 insertions(+)
â â â â
â â â â diff --git a/src/mkreleasehdr.sh b/src/mkreleasehdr.sh
â â â â -index 1ae9588..e6d558b 100755
â â â â +index 1ae95886..e6d558b1 100755
â â â â --- a/src/mkreleasehdr.sh
â â â â +++ b/src/mkreleasehdr.sh
â â â â @@ -2,6 +2,9 @@
â â â â GIT_SHA1=`(git show-ref --head --hash=8 2> /dev/null || echo
00000000) | head -n1`
â â â â GIT_DIRTY=`git diff --no-ext-diff 2> /dev/null | wc -l`
â â â â BUILD_ID=`uname -n`"-"`date +%s`
â â â â +if [ -n "$SOURCE_DATE_EPOCH" ]; then
âââ stat {}
â â â â â @@ -1,8 +1,8 @@
â â â â â
â â â â â - Size: 835 Blocks: 8 IO Block: 4096
regular file
â â â â â + Size: 918 Blocks: 8 IO Block: 4096
regular file
â â â â â Links: 1
â â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â â
â â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â â
â â â â â Birth: -
âââ series
â â â â @@ -1,7 +1,7 @@
â â â â 0001-fix-ftbfs-on-kfreebsd.patch
â â â â 0002-fix-ftbfs-on-kfreebsd.patch
â â â â -0003-use-system-jemalloc.patch
â â â â -0004-dpkg-buildflags.patch
â â â â +debian-packaging/0003-use-system-jemalloc.patch
â â â â +debian-packaging/0004-dpkg-buildflags.patch
â â â â 0005-SOURCE_DATE_EPOCH.patch
â â â â -0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â â â -0008-Drop-tests-with-timing-issues.patch
â â â â
+debian-packaging/0006-Skip-logging-tests-as-not-all-architectures-support-.patch
â â â â +debian-packaging/0008-Drop-tests-with-timing-issues.patch
âââ stat {}
â â â â â @@ -1,8 +1,8 @@
â â â â â
â â â â â - Size: 258 Blocks: 8 IO Block: 4096
regular file
â â â â â + Size: 326 Blocks: 8 IO Block: 4096
regular file
â â â â â Links: 1
â â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â â
â â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â â
â â â â â Birth: -
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â Size: 4096 Blocks: 8 IO Block: 4096
directory
â â â â -Links: 2
â â â â +Links: 3
â â â â Access: (0755/drwxr-xr-x) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ redis-sentinel.service
â â â @@ -7,15 +7,16 @@
â â â Type=forking
â â â ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf
â â â PIDFile=/var/run/redis/redis-sentinel.pid
â â â TimeoutStopSec=0
â â â Restart=always
â â â User=redis
â â â Group=redis
â â â -RunTimeDirectory=redis
â â â +RuntimeDirectory=redis
â â â +RuntimeDirectoryMode=2755
â â â
â â â ExecStartPre=-/bin/run-parts --verbose
/etc/redis/redis-sentinel.pre-up.d
â â â ExecStartPost=-/bin/run-parts --verbose
/etc/redis/redis-sentinel.post-up.d
â â â ExecStop=-/bin/run-parts --verbose
/etc/redis/redis-sentinel.pre-down.d
â â â ExecStop=/bin/kill -s TERM $MAINPID
â â â ExecStopPost=-/bin/run-parts --verbose
/etc/redis/redis-sentinel.post-down.d
â â â
â â â @@ -26,14 +27,15 @@
â â â ProtectHome=yes
â â â ReadOnlyDirectories=/
â â â ReadWriteDirectories=-/var/lib/redis
â â â ReadWriteDirectories=-/var/log/redis
â â â ReadWriteDirectories=-/var/run/redis
â â â CapabilityBoundingSet=~CAP_SYS_PTRACE
â â â
â â â -# redis-sentinel writes its own config file so we allow writing
there (NB.
â â â -# ProtectSystem=true over ProtectSystem=full)
â â â +# redis-sentinel writes to its own config file when in cluster
mode so we
â â â +# permit writing there by default. If you are *not* using this
feature, it is
â â â +# recommended that you replace the following lines with
"ProtectSystem=full".
â â â ProtectSystem=true
â â â ReadWriteDirectories=-/etc/redis
â â â
â â â [Install]
â â â WantedBy=multi-user.target
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 1133 Blocks: 8 IO Block: 4096
regular file
â â â â + Size: 1268 Blocks: 8 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ redis-server.service
â â â @@ -7,15 +7,16 @@
â â â Type=forking
â â â ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
â â â PIDFile=/var/run/redis/redis-server.pid
â â â TimeoutStopSec=0
â â â Restart=always
â â â User=redis
â â â Group=redis
â â â -RunTimeDirectory=redis
â â â +RuntimeDirectory=redis
â â â +RuntimeDirectoryMode=2755
â â â
â â â ExecStartPre=-/bin/run-parts --verbose
/etc/redis/redis-server.pre-up.d
â â â ExecStartPost=-/bin/run-parts --verbose
/etc/redis/redis-server.post-up.d
â â â ExecStop=-/bin/run-parts --verbose
/etc/redis/redis-server.pre-down.d
â â â ExecStop=/bin/kill -s TERM $MAINPID
â â â ExecStopPost=-/bin/run-parts --verbose
/etc/redis/redis-server.post-down.d
â â â
â â â @@ -26,15 +27,16 @@
â â â ProtectHome=yes
â â â ReadOnlyDirectories=/
â â â ReadWriteDirectories=-/var/lib/redis
â â â ReadWriteDirectories=-/var/log/redis
â â â ReadWriteDirectories=-/var/run/redis
â â â CapabilityBoundingSet=~CAP_SYS_PTRACE
â â â
â â â -# redis-server writes its own config file when in cluster mode so
we allow
â â â -# writing there (NB. ProtectSystem=true over ProtectSystem=full)
â â â +# redis-server can write to its own config file when in cluster
mode so we
â â â +# permit writing there by default. If you are not using this
feature, it is
â â â +# recommended that you replace the following lines with
"ProtectSystem=full".
â â â ProtectSystem=true
â â â ReadWriteDirectories=-/etc/redis
â â â
â â â [Install]
â â â WantedBy=multi-user.target
â â â Alias=redis.service
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 1155 Blocks: 8 IO Block: 4096
regular file
â â â â + Size: 1270 Blocks: 8 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ redis-tools.install
â â â @@ -1,5 +1,4 @@
â â â debian/bash_completion.d /usr/share/bash-completion/completions
â â â src/redis-benchmark /usr/bin
â â â src/redis-check-aof /usr/bin
â â â -src/redis-check-rdb /usr/bin
â â â src/redis-cli /usr/bin
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 176 Blocks: 8 IO Block: 4096
regular file
â â â â + Size: 147 Blocks: 8 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ rules
â â â @@ -24,16 +24,16 @@
â â â
â â â override_dh_auto_build:
â â â dh_auto_build --parallel -- V=1
â â â
â â â override_dh_auto_test:
â â â ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
â â â # Avoid race conditions in upstream testsuite. (#830500)
â â â - ./runtest
â â â - ./runtest-sentinel
â â â + taskset --cpu-list 0 ./runtest
â â â + taskset --cpu-list 0 ./runtest-sentinel
â â â endif
â â â
â â â override_dh_compress:
â â â dh_compress -Xredis-trib.rb
â â â
â â â clean:
â â â dh $@
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 906 Blocks: 8 IO Block: 4096
regular file
â â â â + Size: 948 Blocks: 8 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0755/-rwxr-xr-x) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ src
âââ cluster.c
â â â @@ -4648,30 +4648,29 @@
â â â *
â â â * MIGRATE host port "" dbid timeout [COPY | REPLACE] KEYS key1
key2 ... keyN */
â â â void migrateCommand(client *c) {
â â â migrateCachedSocket *cs;
â â â int copy, replace, j;
â â â long timeout;
â â â long dbid;
â â â - long long ttl, expireat;
â â â robj **ov = NULL; /* Objects to migrate. */
â â â robj **kv = NULL; /* Key names. */
â â â robj **newargv = NULL; /* Used to rewrite the command as DEL
... keys ... */
â â â rio cmd, payload;
â â â int may_retry = 1;
â â â int write_error = 0;
â â â + int argv_rewritten = 0;
â â â
â â â /* To support the KEYS option we need the following additional
state. */
â â â int first_key = 3; /* Argument index of the first key. */
â â â int num_keys = 1; /* By default only migrate the 'key'
argument. */
â â â
â â â /* Initialization */
â â â copy = 0;
â â â replace = 0;
â â â - ttl = 0;
â â â
â â â /* Parse additional options */
â â â for (j = 6; j < c->argc; j++) {
â â â if (!strcasecmp(c->argv[j]->ptr,"copy")) {
â â â copy = 1;
â â â } else if (!strcasecmp(c->argv[j]->ptr,"replace")) {
â â â replace = 1;
â â â @@ -4739,15 +4738,17 @@
â â â serverAssertWithInfo(c,NULL,rioWriteBulkCount(&cmd,'*',2));
â â â
serverAssertWithInfo(c,NULL,rioWriteBulkString(&cmd,"SELECT",6));
â â â
serverAssertWithInfo(c,NULL,rioWriteBulkLongLong(&cmd,dbid));
â â â }
â â â
â â â /* Create RESTORE payload and generate the protocol to call
the command. */
â â â for (j = 0; j < num_keys; j++) {
â â â - expireat = getExpire(c->db,kv[j]);
â â â + long long ttl = 0;
â â â + long long expireat = getExpire(c->db,kv[j]);
â â â +
â â â if (expireat != -1) {
â â â ttl = expireat-mstime();
â â â if (ttl < 1) ttl = 1;
â â â }
â â â
serverAssertWithInfo(c,NULL,rioWriteBulkCount(&cmd,'*',replace ? 5 : 4));
â â â if (server.cluster_enabled)
â â â serverAssertWithInfo(c,NULL,
â â â @@ -4837,58 +4838,74 @@
â â â * and we failed to read the first reply (j == 0 test). */
â â â if (!error_from_target && socket_error && j == 0 && may_retry
&&
â â â errno != ETIMEDOUT)
â â â {
â â â goto socket_err; /* A retry is guaranteed because of
tested conditions.*/
â â â }
â â â
â â â + /* On socket errors, close the migration socket now that we
still have
â â â + * the original host/port in the ARGV. Later the original
command may be
â â â + * rewritten to DEL and will be too later. */
â â â + if (socket_error) migrateCloseSocket(c->argv[1],c->argv[2]);
â â â +
â â â if (!copy) {
â â â - /* Translate MIGRATE as DEL for replication/AOF. */
â â â + /* Translate MIGRATE as DEL for replication/AOF. Note that
we do
â â â + * this only for the keys for which we received an
acknowledgement
â â â + * from the receiving Redis server, by using the del_idx
index. */
â â â if (del_idx > 1) {
â â â newargv[0] = createStringObject("DEL",3);
â â â /* Note that the following call takes ownership of
newargv. */
â â â replaceClientCommandVector(c,del_idx,newargv);
â â â + argv_rewritten = 1;
â â â } else {
â â â /* No key transfer acknowledged, no need to rewrite as
DEL. */
â â â zfree(newargv);
â â â }
â â â newargv = NULL; /* Make it safe to call zfree() on it in
the future. */
â â â }
â â â
â â â /* If we are here and a socket error happened, we don't want
to retry.
â â â - * Just signal the problem to the client, but only do it if we
don't
â â â - * already queued a different error reported by the
destination server. */
â â â + * Just signal the problem to the client, but only do it if we
did not
â â â + * already queue a different error reported by the destination
server. */
â â â if (!error_from_target && socket_error) {
â â â may_retry = 0;
â â â goto socket_err;
â â â }
â â â
â â â if (!error_from_target) {
â â â /* Success! Update the last_dbid in migrateCachedSocket,
so that we can
â â â - * avoid SELECT the next time if the target DB is the
same. Reply +OK. */
â â â + * avoid SELECT the next time if the target DB is the
same. Reply +OK.
â â â + *
â â â + * Note: If we reached this point, even if socket_error is
true
â â â + * still the SELECT command succeeded (otherwise the code
jumps to
â â â + * socket_err label. */
â â â cs->last_dbid = dbid;
â â â addReply(c,shared.ok);
â â â } else {
â â â /* On error we already sent it in the for loop above, and
set
â â â * the curretly selected socket to -1 to force SELECT the
next time. */
â â â }
â â â
â â â sdsfree(cmd.io.buffer.ptr);
â â â zfree(ov); zfree(kv); zfree(newargv);
â â â - if (socket_error) migrateCloseSocket(c->argv[1],c->argv[2]);
â â â return;
â â â
â â â /* On socket errors we try to close the cached socket and try
again.
â â â * It is very common for the cached socket to get closed, if just
reopening
â â â * it works it's a shame to notify the error to the caller. */
â â â socket_err:
â â â /* Cleanup we want to perform in both the retry and no retry
case.
â â â * Note: Closing the migrate socket will also force SELECT
next time. */
â â â sdsfree(cmd.io.buffer.ptr);
â â â - migrateCloseSocket(c->argv[1],c->argv[2]);
â â â +
â â â + /* If the command was rewritten as DEL and there was a socket
error,
â â â + * we already closed the socket earlier. While
migrateCloseSocket()
â â â + * is idempotent, the host/port arguments are now gone, so
don't do it
â â â + * again. */
â â â + if (!argv_rewritten) migrateCloseSocket(c->argv[1],c->argv[2]);
â â â zfree(newargv);
â â â newargv = NULL; /* This will get reallocated on retry. */
â â â
â â â /* Retry only if it's not a timeout and we never attempted a
retry
â â â * (or the code jumping here did not set may_retry to zero). */
â â â if (errno != ETIMEDOUT && may_retry) {
â â â may_retry = 0;
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 206987 Blocks: 408 IO Block: 4096
regular file
â â â â + Size: 207856 Blocks: 408 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ debug.c
â â â @@ -122,15 +122,15 @@
â â â
â â â memset(final,0,20); /* Start with a clean result */
â â â
â â â for (j = 0; j < server.dbnum; j++) {
â â â redisDb *db = server.db+j;
â â â
â â â if (dictSize(db->dict) == 0) continue;
â â â - di = dictGetIterator(db->dict);
â â â + di = dictGetSafeIterator(db->dict);
â â â
â â â /* hash the DB id, so the same dataset moved in a different
â â â * DB will lead to a different digest */
â â â aux = htonl(j);
â â â mixDigest(final,&aux,sizeof(aux));
â â â
â â â /* Iterate this DB writing every entry */
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 46049 Blocks: 96 IO Block: 4096
regular file
â â â â + Size: 46053 Blocks: 96 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ geo.c
â â â @@ -348,15 +348,15 @@
â â â continue;
â â â }
â â â
â â â /* Debugging info. */
â â â if (debugmsg) {
â â â GeoHashRange long_range, lat_range;
â â â geohashGetCoordRange(&long_range,&lat_range);
â â â - GeoHashArea myarea = {{0}};
â â â + GeoHashArea myarea = {{0,0},{0,0},{0,0}};
â â â geohashDecode(long_range, lat_range, neighbors[i],
&myarea);
â â â
â â â /* Dump center square. */
â â â D("neighbors[%d]:\n",i);
â â â D("area.longitude.min: %f\n", myarea.longitude.min);
â â â D("area.longitude.max: %f\n", myarea.longitude.max);
â â â D("area.latitude.min: %f\n", myarea.latitude.min);
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 29757 Blocks: 64 IO Block: 4096
regular file
â â â â + Size: 29771 Blocks: 64 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ networking.c
â â â @@ -1265,16 +1265,18 @@
â â â if (!(c->flags & CLIENT_SLAVE) && clientsArePaused())
break;
â â â
â â â /* Immediately abort if the client is in the middle of
something. */
â â â if (c->flags & CLIENT_BLOCKED) break;
â â â
â â â /* CLIENT_CLOSE_AFTER_REPLY closes the connection once the
reply is
â â â * written to the client. Make sure to not let the reply
grow after
â â â - * this flag has been set (i.e. don't process more
commands). */
â â â - if (c->flags & CLIENT_CLOSE_AFTER_REPLY) break;
â â â + * this flag has been set (i.e. don't process more
commands).
â â â + *
â â â + * The same applies for clients we want to terminate ASAP.
*/
â â â + if (c->flags &
(CLIENT_CLOSE_AFTER_REPLY|CLIENT_CLOSE_ASAP)) break;
â â â
â â â /* Determine request type when unknown. */
â â â if (!c->reqtype) {
â â â if (c->querybuf[0] == '*') {
â â â c->reqtype = PROTO_REQ_MULTIBULK;
â â â } else {
â â â c->reqtype = PROTO_REQ_INLINE;
â â â @@ -1633,14 +1635,34 @@
â â â pauseClients(duration);
â â â addReply(c,shared.ok);
â â â } else {
â â â addReplyError(c, "Syntax error, try CLIENT (LIST | KILL |
GETNAME | SETNAME | PAUSE | REPLY)");
â â â }
â â â }
â â â
â â â +/* This callback is bound to POST and "Host:" command names. Those
are not
â â â + * really commands, but are used in security attacks in order to
talk to
â â â + * Redis instances via HTTP, with a technique called "cross
protocol scripting"
â â â + * which exploits the fact that services like Redis will discard
invalid
â â â + * HTTP headers and will process what follows.
â â â + *
â â â + * As a protection against this attack, Redis will terminate the
connection
â â â + * when a POST or "Host:" header is seen, and will log the event
from
â â â + * time to time (to avoid creating a DOS as a result of too many
logs). */
â â â +void securityWarningCommand(client *c) {
â â â + static time_t logged_time;
â â â + time_t now = time(NULL);
â â â +
â â â + if (labs(now-logged_time) > 60) {
â â â + serverLog(LL_WARNING,"Possible SECURITY ATTACK detected.
It looks like somebody is sending POST or Host: commands to Redis. This is
likely due to an attacker attempting to use Cross Protocol Scripting to
compromise your Redis instance. Connection aborted.");
â â â + logged_time = now;
â â â + }
â â â + freeClientAsync(c);
â â â +}
â â â +
â â â /* Rewrite the command vector of the client. All the new objects
ref count
â â â * is incremented. The old command vector is freed, and the old
objects
â â â * ref count is decremented. */
â â â void rewriteClientCommandVector(client *c, int argc, ...) {
â â â va_list ap;
â â â int j;
â â â robj **argv; /* The new argument vector */
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 70629 Blocks: 144 IO Block: 4096
regular file
â â â â + Size: 71766 Blocks: 144 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ object.c
â â â @@ -237,19 +237,17 @@
â â â void freeStringObject(robj *o) {
â â â if (o->encoding == OBJ_ENCODING_RAW) {
â â â sdsfree(o->ptr);
â â â }
â â â }
â â â
â â â void freeListObject(robj *o) {
â â â - switch (o->encoding) {
â â â - case OBJ_ENCODING_QUICKLIST:
â â â + if (o->encoding == OBJ_ENCODING_QUICKLIST) {
â â â quicklistRelease(o->ptr);
â â â - break;
â â â - default:
â â â + } else {
â â â serverPanic("Unknown list encoding type");
â â â }
â â â }
â â â
â â â void freeSetObject(robj *o) {
â â â switch (o->encoding) {
â â â case OBJ_ENCODING_HT:
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 23224 Blocks: 48 IO Block: 4096
regular file
â â â â + Size: 23198 Blocks: 48 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ redis-cli.c
â â â @@ -271,14 +271,18 @@
â â â redisReply *reply = redisCommand(context, "COMMAND");
â â â if(reply == NULL || reply->type != REDIS_REPLY_ARRAY) return;
â â â
â â â /* Scan the array reported by COMMAND and fill only the
entries that
â â â * don't already match what we have. */
â â â for (size_t j = 0; j < reply->elements; j++) {
â â â redisReply *entry = reply->element[j];
â â â + if (entry->type != REDIS_REPLY_ARRAY || entry->elements <
4 ||
â â â + entry->element[0]->type != REDIS_REPLY_STRING ||
â â â + entry->element[1]->type != REDIS_REPLY_INTEGER ||
â â â + entry->element[3]->type != REDIS_REPLY_INTEGER) return;
â â â char *cmdname = entry->element[0]->str;
â â â int i;
â â â
â â â for (i = 0; i < helpEntriesLen; i++) {
â â â helpEntry *he = helpEntries+i;
â â â if (!strcasecmp(he->argv[0],cmdname))
â â â break;
â â â @@ -1263,14 +1267,19 @@
â â â static void repl(void) {
â â â sds historyfile = NULL;
â â â int history = 0;
â â â char *line;
â â â int argc;
â â â sds *argv;
â â â
â â â + /* Initialize the help and, if possible, use the COMMAND
command in order
â â â + * to retrieve missing entries. */
â â â + cliInitHelp();
â â â + cliIntegrateHelp();
â â â +
â â â config.interactive = 1;
â â â linenoiseSetMultiLine(1);
â â â linenoiseSetCompletionCallback(completionCallback);
â â â linenoiseSetHintsCallback(hintsCallback);
â â â linenoiseSetFreeHintsCallback(freeHintsCallback);
â â â
â â â /* Only use history and load the rc file when stdin is a tty.
*/
â â â @@ -2593,19 +2602,14 @@
â â â config.output = OUTPUT_STANDARD;
â â â config.mb_delim = sdsnew("\n");
â â â
â â â firstarg = parseOptions(argc,argv);
â â â argc -= firstarg;
â â â argv += firstarg;
â â â
â â â - /* Initialize the help and, if possible, use the COMMAND
command in order
â â â - * to retrieve missing entries. */
â â â - cliInitHelp();
â â â - cliIntegrateHelp();
â â â -
â â â /* Latency mode */
â â â if (config.latency_mode) {
â â â if (cliConnect(0) == REDIS_ERR) exit(1);
â â â latencyMode();
â â â }
â â â
â â â /* Latency distribution mode */
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 90077 Blocks: 176 IO Block: 4096
regular file
â â â â + Size: 90339 Blocks: 184 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ server.c
â â â @@ -290,14 +290,16 @@
â â â {"geopos",geoposCommand,-2,"r",0,NULL,1,1,1,0,0},
â â â {"geodist",geodistCommand,-4,"r",0,NULL,1,1,1,0,0},
â â â {"pfselftest",pfselftestCommand,1,"a",0,NULL,0,0,0,0,0},
â â â {"pfadd",pfaddCommand,-2,"wmF",0,NULL,1,1,1,0,0},
â â â {"pfcount",pfcountCommand,-2,"r",0,NULL,1,-1,1,0,0},
â â â {"pfmerge",pfmergeCommand,-2,"wm",0,NULL,1,-1,1,0,0},
â â â {"pfdebug",pfdebugCommand,-3,"w",0,NULL,0,0,0,0,0},
â â â + {"post",securityWarningCommand,-1,"lt",0,NULL,0,0,0,0,0},
â â â + {"host:",securityWarningCommand,-1,"lt",0,NULL,0,0,0,0,0},
â â â {"latency",latencyCommand,-2,"aslt",0,NULL,0,0,0,0,0}
â â â };
â â â
â â â struct evictionPoolEntry *evictionPoolAlloc(void);
â â â
â â â /*============================ Utility functions
============================ */
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 162619 Blocks: 320 IO Block: 4096
regular file
â â â â + Size: 162744 Blocks: 320 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ server.h
â â â @@ -1641,14 +1641,15 @@
â â â void geodistCommand(client *c);
â â â void pfselftestCommand(client *c);
â â â void pfaddCommand(client *c);
â â â void pfcountCommand(client *c);
â â â void pfmergeCommand(client *c);
â â â void pfdebugCommand(client *c);
â â â void latencyCommand(client *c);
â â â +void securityWarningCommand(client *c);
â â â
â â â #if defined(__GNUC__)
â â â void *calloc(size_t count, size_t size) __attribute__
((deprecated));
â â â void free(void *ptr) __attribute__ ((deprecated));
â â â void *malloc(size_t size) __attribute__ ((deprecated));
â â â void *realloc(void *ptr, size_t size) __attribute__ ((deprecated));
â â â #endif
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 74429 Blocks: 152 IO Block: 4096
regular file
â â â â + Size: 74469 Blocks: 152 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ t_zset.c
â â â @@ -1243,15 +1243,15 @@
â â â int nx = (flags & ZADD_NX) != 0;
â â â int xx = (flags & ZADD_XX) != 0;
â â â int ch = (flags & ZADD_CH) != 0;
â â â
â â â /* After the options, we expect to have an even number of
args, since
â â â * we expect any number of score-element pairs. */
â â â elements = c->argc-scoreidx;
â â â - if (elements % 2) {
â â â + if (elements % 2 || !elements) {
â â â addReply(c,shared.syntaxerr);
â â â return;
â â â }
â â â elements /= 2; /* Now this holds the number of score-element
pairs. */
â â â
â â â /* Check for incompatible options. */
â â â if (nx && xx) {
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 96252 Blocks: 192 IO Block: 4096
regular file
â â â â + Size: 96265 Blocks: 192 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
âââ version.h
â â â @@ -1 +1 @@
â â â -#define REDIS_VERSION "3.2.6"
â â â +#define REDIS_VERSION "3.2.8"
âââ ziplist.c
â â â @@ -176,30 +176,30 @@
â â â (encoding) = (ptr[0]); \
â â â if ((encoding) < ZIP_STR_MASK) (encoding) &= ZIP_STR_MASK; \
â â â } while(0)
â â â
â â â void ziplistRepr(unsigned char *zl);
â â â
â â â /* Return bytes needed to store integer encoded by 'encoding' */
â â â -static unsigned int zipIntSize(unsigned char encoding) {
â â â +unsigned int zipIntSize(unsigned char encoding) {
â â â switch(encoding) {
â â â case ZIP_INT_8B: return 1;
â â â case ZIP_INT_16B: return 2;
â â â case ZIP_INT_24B: return 3;
â â â case ZIP_INT_32B: return 4;
â â â case ZIP_INT_64B: return 8;
â â â default: return 0; /* 4 bit immediate */
â â â }
â â â assert(NULL);
â â â return 0;
â â â }
â â â
â â â /* Encode the length 'rawlen' writing it in 'p'. If p is NULL it
just returns
â â â * the amount of bytes required to encode such a length. */
â â â -static unsigned int zipEncodeLength(unsigned char *p, unsigned
char encoding, unsigned int rawlen) {
â â â +unsigned int zipEncodeLength(unsigned char *p, unsigned char
encoding, unsigned int rawlen) {
â â â unsigned char len = 1, buf[5];
â â â
â â â if (ZIP_IS_STR(encoding)) {
â â â /* Although encoding is given it may not be set for
strings,
â â â * so we determine it here using the raw length. */
â â â if (rawlen <= 0x3f) {
â â â if (!p) return len;
â â â @@ -255,15 +255,15 @@
â â â (lensize) = 1;
\
â â â (len) = zipIntSize(encoding);
\
â â â }
\
â â â } while(0);
â â â
â â â /* Encode the length of the previous entry and write it to "p".
Return the
â â â * number of bytes needed to encode this length if "p" is NULL. */
â â â -static unsigned int zipPrevEncodeLength(unsigned char *p, unsigned
int len) {
â â â +unsigned int zipPrevEncodeLength(unsigned char *p, unsigned int
len) {
â â â if (p == NULL) {
â â â return (len < ZIP_BIGLEN) ? 1 : sizeof(len)+1;
â â â } else {
â â â if (len < ZIP_BIGLEN) {
â â â p[0] = len;
â â â return 1;
â â â } else {
â â â @@ -273,15 +273,15 @@
â â â return 1+sizeof(len);
â â â }
â â â }
â â â }
â â â
â â â /* Encode the length of the previous entry and write it to "p".
This only
â â â * uses the larger encoding (required in __ziplistCascadeUpdate).
*/
â â â -static void zipPrevEncodeLengthForceLarge(unsigned char *p,
unsigned int len) {
â â â +void zipPrevEncodeLengthForceLarge(unsigned char *p, unsigned int
len) {
â â â if (p == NULL) return;
â â â p[0] = ZIP_BIGLEN;
â â â memcpy(p+1,&len,sizeof(len));
â â â memrev32ifbe(p+1);
â â â }
â â â
â â â /* Decode the number of bytes required to store the length of the
previous
â â â @@ -305,31 +305,31 @@
â â â memcpy(&(prevlen), ((char*)(ptr)) + 1, 4);
\
â â â memrev32ifbe(&prevlen);
\
â â â }
\
â â â } while(0);
â â â
â â â /* Return the difference in number of bytes needed to store the
length of the
â â â * previous element 'len', in the entry pointed to by 'p'. */
â â â -static int zipPrevLenByteDiff(unsigned char *p, unsigned int len) {
â â â +int zipPrevLenByteDiff(unsigned char *p, unsigned int len) {
â â â unsigned int prevlensize;
â â â ZIP_DECODE_PREVLENSIZE(p, prevlensize);
â â â return zipPrevEncodeLength(NULL, len) - prevlensize;
â â â }
â â â
â â â /* Return the total number of bytes used by the entry pointed to
by 'p'. */
â â â -static unsigned int zipRawEntryLength(unsigned char *p) {
â â â +unsigned int zipRawEntryLength(unsigned char *p) {
â â â unsigned int prevlensize, encoding, lensize, len;
â â â ZIP_DECODE_PREVLENSIZE(p, prevlensize);
â â â ZIP_DECODE_LENGTH(p + prevlensize, encoding, lensize, len);
â â â return prevlensize + lensize + len;
â â â }
â â â
â â â /* Check if string pointed to by 'entry' can be encoded as an
integer.
â â â * Stores the integer value in 'v' and its encoding in 'encoding'.
*/
â â â -static int zipTryEncoding(unsigned char *entry, unsigned int
entrylen, long long *v, unsigned char *encoding) {
â â â +int zipTryEncoding(unsigned char *entry, unsigned int entrylen,
long long *v, unsigned char *encoding) {
â â â long long value;
â â â
â â â if (entrylen >= 32 || entrylen == 0) return 0;
â â â if (string2ll((char*)entry,entrylen,&value)) {
â â â /* Great, the string can be encoded. Check what's the
smallest
â â â * of our encoding types that can hold this value. */
â â â if (value >= 0 && value <= 12) {
â â â @@ -348,15 +348,15 @@
â â â *v = value;
â â â return 1;
â â â }
â â â return 0;
â â â }
â â â
â â â /* Store integer 'value' at 'p', encoded as 'encoding' */
â â â -static void zipSaveInteger(unsigned char *p, int64_t value,
unsigned char encoding) {
â â â +void zipSaveInteger(unsigned char *p, int64_t value, unsigned char
encoding) {
â â â int16_t i16;
â â â int32_t i32;
â â â int64_t i64;
â â â if (encoding == ZIP_INT_8B) {
â â â ((int8_t*)p)[0] = (int8_t)value;
â â â } else if (encoding == ZIP_INT_16B) {
â â â i16 = value;
â â â @@ -378,15 +378,15 @@
â â â /* Nothing to do, the value is stored in the encoding
itself. */
â â â } else {
â â â assert(NULL);
â â â }
â â â }
â â â
â â â /* Read integer encoded as 'encoding' from 'p' */
â â â -static int64_t zipLoadInteger(unsigned char *p, unsigned char
encoding) {
â â â +int64_t zipLoadInteger(unsigned char *p, unsigned char encoding) {
â â â int16_t i16;
â â â int32_t i32;
â â â int64_t i64, ret = 0;
â â â if (encoding == ZIP_INT_8B) {
â â â ret = ((int8_t*)p)[0];
â â â } else if (encoding == ZIP_INT_16B) {
â â â memcpy(&i16,p,sizeof(i16));
â â â @@ -410,15 +410,15 @@
â â â } else {
â â â assert(NULL);
â â â }
â â â return ret;
â â â }
â â â
â â â /* Return a struct with all information about an entry. */
â â â -static void zipEntry(unsigned char *p, zlentry *e) {
â â â +void zipEntry(unsigned char *p, zlentry *e) {
â â â
â â â ZIP_DECODE_PREVLEN(p, e->prevrawlensize, e->prevrawlen);
â â â ZIP_DECODE_LENGTH(p + e->prevrawlensize, e->encoding,
e->lensize, e->len);
â â â e->headersize = e->prevrawlensize + e->lensize;
â â â e->p = p;
â â â }
â â â
â â â @@ -430,15 +430,15 @@
â â â ZIPLIST_TAIL_OFFSET(zl) = intrev32ifbe(ZIPLIST_HEADER_SIZE);
â â â ZIPLIST_LENGTH(zl) = 0;
â â â zl[bytes-1] = ZIP_END;
â â â return zl;
â â â }
â â â
â â â /* Resize the ziplist. */
â â â -static unsigned char *ziplistResize(unsigned char *zl, unsigned
int len) {
â â â +unsigned char *ziplistResize(unsigned char *zl, unsigned int len) {
â â â zl = zrealloc(zl,len);
â â â ZIPLIST_BYTES(zl) = intrev32ifbe(len);
â â â zl[len-1] = ZIP_END;
â â â return zl;
â â â }
â â â
â â â /* When an entry is inserted, we need to set the prevlen field of
the next
â â â @@ -457,15 +457,15 @@
â â â * because it can cause a "flapping" effect where a chain prevlen
fields is
â â â * first grown and then shrunk again after consecutive inserts.
Rather, the
â â â * field is allowed to stay larger than necessary, because a large
prevlen
â â â * field implies the ziplist is holding large entries anyway.
â â â *
â â â * The pointer "p" points to the first entry that does NOT need to
be
â â â * updated, i.e. consecutive fields MAY need an update. */
â â â -static unsigned char *__ziplistCascadeUpdate(unsigned char *zl,
unsigned char *p) {
â â â +unsigned char *__ziplistCascadeUpdate(unsigned char *zl, unsigned
char *p) {
â â â size_t curlen = intrev32ifbe(ZIPLIST_BYTES(zl)), rawlen,
rawlensize;
â â â size_t offset, noffset, extra;
â â â unsigned char *np;
â â â zlentry cur, next;
â â â
â â â while (p[0] != ZIP_END) {
â â â zipEntry(p, &cur);
â â â @@ -519,15 +519,15 @@
â â â break;
â â â }
â â â }
â â â return zl;
â â â }
â â â
â â â /* Delete "num" entries, starting at "p". Returns pointer to the
ziplist. */
â â â -static unsigned char *__ziplistDelete(unsigned char *zl, unsigned
char *p, unsigned int num) {
â â â +unsigned char *__ziplistDelete(unsigned char *zl, unsigned char
*p, unsigned int num) {
â â â unsigned int i, totlen, deleted = 0;
â â â size_t offset;
â â â int nextdiff = 0;
â â â zlentry first, tail;
â â â
â â â zipEntry(p, &first);
â â â for (i = 0; p[0] != ZIP_END && i < num; i++) {
â â â @@ -579,15 +579,15 @@
â â â if (nextdiff != 0)
â â â zl = __ziplistCascadeUpdate(zl,p);
â â â }
â â â return zl;
â â â }
â â â
â â â /* Insert item at "p". */
â â â -static unsigned char *__ziplistInsert(unsigned char *zl, unsigned
char *p, unsigned char *s, unsigned int slen) {
â â â +unsigned char *__ziplistInsert(unsigned char *zl, unsigned char
*p, unsigned char *s, unsigned int slen) {
â â â size_t curlen = intrev32ifbe(ZIPLIST_BYTES(zl)), reqlen;
â â â unsigned int prevlensize, prevlen = 0;
â â â size_t offset;
â â â int nextdiff = 0;
â â â unsigned char encoding = 0;
â â â long long value = 123456789; /* initialized to avoid warning.
Using a value
â â â that is easy to see if for
some reason
â â â @@ -617,28 +617,36 @@
â â â * the length of the payload. */
â â â reqlen += zipPrevEncodeLength(NULL,prevlen);
â â â reqlen += zipEncodeLength(NULL,encoding,slen);
â â â
â â â /* When the insert position is not equal to the tail, we need
to
â â â * make sure that the next entry can hold this entry's length
in
â â â * its prevlen field. */
â â â + int forcelarge = 0;
â â â nextdiff = (p[0] != ZIP_END) ? zipPrevLenByteDiff(p,reqlen) :
0;
â â â + if (nextdiff == -4 && reqlen < 4) {
â â â + nextdiff = 0;
â â â + forcelarge = 1;
â â â + }
â â â
â â â /* Store offset because a realloc may change the address of
zl. */
â â â offset = p-zl;
â â â zl = ziplistResize(zl,curlen+reqlen+nextdiff);
â â â p = zl+offset;
â â â
â â â /* Apply memory move when necessary and update tail offset. */
â â â if (p[0] != ZIP_END) {
â â â /* Subtract one because of the ZIP_END bytes */
â â â memmove(p+reqlen,p-nextdiff,curlen-offset-1+nextdiff);
â â â
â â â /* Encode this entry's raw length in the next entry. */
â â â - zipPrevEncodeLength(p+reqlen,reqlen);
â â â + if (forcelarge)
â â â + zipPrevEncodeLengthForceLarge(p+reqlen,reqlen);
â â â + else
â â â + zipPrevEncodeLength(p+reqlen,reqlen);
â â â
â â â /* Update offset for tail */
â â â ZIPLIST_TAIL_OFFSET(zl) =
â â â
intrev32ifbe(intrev32ifbe(ZIPLIST_TAIL_OFFSET(zl))+reqlen);
â â â
â â â /* When the tail contains more than one entry, we need to
take
â â â * "nextdiff" in account as well. Otherwise, a change in
the
âââ stat {}
â â â â @@ -1,8 +1,8 @@
â â â â
â â â â - Size: 61305 Blocks: 120 IO Block: 4096
regular file
â â â â + Size: 61424 Blocks: 120 IO Block: 4096
regular file
â â â â Links: 1
â â â â Access: (0644/-rw-r--r--) Uid: ( 1000/ lamby) Gid: (
1000/ lamby)
â â â â
â â â â Modify: 1970-01-01 00:00:01.000000000 +0000
â â â â
â â â â Birth: -
--- End Message ---