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

Please unblock package neovim

This upload includes fixes for CVE-2017-{5953,6349,6350}.

unblock neovim/0.1.7-4

-- System Information:
Debian Release: 9.0
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, 
'experimental-debug'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.9.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
diffstat for neovim-0.1.7 neovim-0.1.7

 changelog                                                           |    9 ++
 patches/0001-debcherry-fixup-patch.patch                            |   32 
+++++++-
 patches/0002-test-Handle-SIGHUP-in-tty-test-fixture.patch           |    4 -
 patches/0003-tui-backpressure-Drop-messages-to-avoid-flooding.patch |    4 -
 patches/0004-vim-patch-8.0.0377.patch                               |   38 
++++++++++
 patches/0005-vim-patch-8.0.0378.patch                               |   37 
+++++++++
 patches/series                                                      |    2 
 7 files changed, 118 insertions(+), 8 deletions(-)

diff -Nru neovim-0.1.7/debian/changelog neovim-0.1.7/debian/changelog
--- neovim-0.1.7/debian/changelog       2017-01-16 07:18:35.000000000 -0500
+++ neovim-0.1.7/debian/changelog       2017-04-10 08:15:38.000000000 -0400
@@ -1,3 +1,12 @@
+neovim (0.1.7-4) unstable; urgency=high
+
+  * Cherry-pick b338bb9d & 4af6c608 from upstream to fix buffer overflow if a
+    spellfile has an invalid length in it.  (CVE-2017-5953)
+  * Cherry-pick fb66a7c6 & ad66826a from upstream to fix buffer overflows when
+    reading corrupted undo files.  (CVE-2017-6349 & CVE-2017-6350)
+
+ -- James McCoy <james...@debian.org>  Mon, 10 Apr 2017 08:15:38 -0400
+
 neovim (0.1.7-3) unstable; urgency=medium
 
   * Disable global_spec.lua since it's rather flaky.
diff -Nru neovim-0.1.7/debian/patches/0001-debcherry-fixup-patch.patch 
neovim-0.1.7/debian/patches/0001-debcherry-fixup-patch.patch
--- neovim-0.1.7/debian/patches/0001-debcherry-fixup-patch.patch        
2017-01-16 07:18:35.000000000 -0500
+++ neovim-0.1.7/debian/patches/0001-debcherry-fixup-patch.patch        
2017-04-10 08:15:38.000000000 -0400
@@ -1,8 +1,12 @@
-From 2ef123279cbff7afeb5546992dc34c902664b4db Mon Sep 17 00:00:00 2001
+From 5a06ba6f8d7c464ec319eac1a805575849203371 Mon Sep 17 00:00:00 2001
 From: James McCoy <james...@jamessan.com>
-Date: Mon, 16 Jan 2017 07:19:41 -0500
-Subject: [PATCH 1/3] debcherry fixup patch
+Date: Mon, 10 Apr 2017 08:16:34 -0400
+Subject: [PATCH 1/5] debcherry fixup patch
 
+53bde37a vim-patch:8.0.0376
+        - no changes against upstream or conflicts
+aa0c704e vim-patch:8.0.0322
+        - extra changes or conflicts
 7b3fc809 out_data_decide_throttle(): timeout instead of hard limit.
         - no changes against upstream or conflicts
 443f0387 out_data_decide_throttle(): Avoid too-small final chunk.
@@ -22,11 +26,12 @@
  src/nvim/main.c                       |   2 +-
  src/nvim/memory.c                     |  31 ++++---
  src/nvim/os/shell.c                   | 147 ++++++++++++++++++++++++++++++++--
+ src/nvim/spell.c                      |   6 +-
  test/functional/eval/execute_spec.lua |  17 ++--
  test/functional/terminal/helpers.lua  |   1 +
  test/functional/ui/output_spec.lua    |  21 +++++
  test/functional/ui/screen.lua         |  47 ++++++++---
- 10 files changed, 235 insertions(+), 49 deletions(-)
+ 11 files changed, 240 insertions(+), 50 deletions(-)
 
 diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
 index a1bf379d..3c147244 100644
@@ -353,6 +358,25 @@
    if (cnt) {
      rbuffer_consumed(buf, cnt);
    }
+diff --git a/src/nvim/spell.c b/src/nvim/spell.c
+index 7119ac6d..7dc9eb05 100644
+--- a/src/nvim/spell.c
++++ b/src/nvim/spell.c
+@@ -3589,9 +3589,13 @@ spell_read_tree (
+ 
+   // The tree size was computed when writing the file, so that we can
+   // allocate it as one long block. <nodecount>
+-  int len = get4c(fd);
++  long len = get4c(fd);
+   if (len < 0)
+     return SP_TRUNCERROR;
++  if ((size_t)len >= SIZE_MAX / sizeof(int)) {
++    // Invalid length, multiply with sizeof(int) would overflow.
++    return SP_FORMERROR;
++  }
+   if (len > 0) {
+     // Allocate the byte array.
+     bp = xmalloc(len);
 diff --git a/test/functional/eval/execute_spec.lua 
b/test/functional/eval/execute_spec.lua
 index b5b48143..fc13c0a7 100644
 --- a/test/functional/eval/execute_spec.lua
diff -Nru 
neovim-0.1.7/debian/patches/0002-test-Handle-SIGHUP-in-tty-test-fixture.patch 
neovim-0.1.7/debian/patches/0002-test-Handle-SIGHUP-in-tty-test-fixture.patch
--- 
neovim-0.1.7/debian/patches/0002-test-Handle-SIGHUP-in-tty-test-fixture.patch   
    2017-01-16 07:18:35.000000000 -0500
+++ 
neovim-0.1.7/debian/patches/0002-test-Handle-SIGHUP-in-tty-test-fixture.patch   
    2017-04-10 08:15:38.000000000 -0400
@@ -1,7 +1,7 @@
-From 867ed903bffe6befb44208a34c8084db4ea44497 Mon Sep 17 00:00:00 2001
+From e54118bdb9165d11ebe6250ab08ff2e4b85e29d2 Mon Sep 17 00:00:00 2001
 From: "Justin M. Keyes" <justi...@gmail.com>
 Date: Wed, 7 Dec 2016 14:01:51 +0100
-Subject: [PATCH 2/3] test: Handle SIGHUP in tty-test fixture.
+Subject: [PATCH 2/5] test: Handle SIGHUP in tty-test fixture.
 
 Closes #5727
 ---
diff -Nru 
neovim-0.1.7/debian/patches/0003-tui-backpressure-Drop-messages-to-avoid-flooding.patch
 
neovim-0.1.7/debian/patches/0003-tui-backpressure-Drop-messages-to-avoid-flooding.patch
--- 
neovim-0.1.7/debian/patches/0003-tui-backpressure-Drop-messages-to-avoid-flooding.patch
     2017-01-16 07:18:35.000000000 -0500
+++ 
neovim-0.1.7/debian/patches/0003-tui-backpressure-Drop-messages-to-avoid-flooding.patch
     2017-04-10 08:15:38.000000000 -0400
@@ -1,7 +1,7 @@
-From 630b72431209463f105435aae491818cf53a2ac7 Mon Sep 17 00:00:00 2001
+From d3babd790b7f67fa6ba590877961d49ae6e76826 Mon Sep 17 00:00:00 2001
 From: "Justin M. Keyes" <justi...@gmail.com>
 Date: Mon, 3 Oct 2016 10:46:11 +0200
-Subject: [PATCH 3/3] tui: "backpressure": Drop messages to avoid flooding.
+Subject: [PATCH 3/5] tui: "backpressure": Drop messages to avoid flooding.
 
 Closes #1234
 
diff -Nru neovim-0.1.7/debian/patches/0004-vim-patch-8.0.0377.patch 
neovim-0.1.7/debian/patches/0004-vim-patch-8.0.0377.patch
--- neovim-0.1.7/debian/patches/0004-vim-patch-8.0.0377.patch   1969-12-31 
19:00:00.000000000 -0500
+++ neovim-0.1.7/debian/patches/0004-vim-patch-8.0.0377.patch   2017-04-10 
08:15:38.000000000 -0400
@@ -0,0 +1,38 @@
+From 6e3b7e649e7b1e7c2158fdc03f6a9aa02583dcf1 Mon Sep 17 00:00:00 2001
+From: James McCoy <james...@jamessan.com>
+Date: Sat, 8 Apr 2017 21:22:11 -0400
+Subject: [PATCH 4/5] vim-patch:8.0.0377
+
+Problem:    Possible overflow when reading corrupted undo file.
+Solution:   Check if allocated size is not too big. (King)
+
+https://github.com/vim/vim/commit/3eb1637b1bba19519885dd6d377bd5596e91d22c
+
+CVE-2017-6349
+---
+ src/nvim/undo.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/nvim/undo.c b/src/nvim/undo.c
+index 4d56046b..11f4d556 100644
+--- a/src/nvim/undo.c
++++ b/src/nvim/undo.c
+@@ -76,6 +76,7 @@
+ #include <inttypes.h>
+ #include <limits.h>
+ #include <stdbool.h>
++#include <stdint.h>
+ #include <string.h>
+ #include <fcntl.h>
+ 
+@@ -1403,7 +1404,9 @@ void u_read_undo(char *name, char_u *hash, char_u 
*orig_name)
+   // sequence numbers of the headers.
+   // When there are no headers uhp_table is NULL.
+   if (num_head > 0) {
+-    uhp_table = xmalloc((size_t)num_head * sizeof(u_header_T *));
++    if ((size_t)num_head < SIZE_MAX / sizeof(*uhp_table)) {
++      uhp_table = xmalloc((size_t)num_head * sizeof(*uhp_table));
++    }
+   }
+ 
+   long num_read_uhps = 0;
diff -Nru neovim-0.1.7/debian/patches/0005-vim-patch-8.0.0378.patch 
neovim-0.1.7/debian/patches/0005-vim-patch-8.0.0378.patch
--- neovim-0.1.7/debian/patches/0005-vim-patch-8.0.0378.patch   1969-12-31 
19:00:00.000000000 -0500
+++ neovim-0.1.7/debian/patches/0005-vim-patch-8.0.0378.patch   2017-04-10 
08:15:38.000000000 -0400
@@ -0,0 +1,37 @@
+From 64dd432e3e136a559d5959bc91504375f01e027d Mon Sep 17 00:00:00 2001
+From: James McCoy <james...@jamessan.com>
+Date: Sat, 8 Apr 2017 21:56:02 -0400
+Subject: [PATCH 5/5] vim-patch:8.0.0378
+
+Problem:    Another possible overflow when reading corrupted undo file.
+Solution:   Check if allocated size is not too big. (King)
+
+https://github.com/vim/vim/commit/0c8485f0e4931463c0f7986e1ea84a7d79f10c75
+
+CVE-2017-6350
+---
+ src/nvim/undo.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/nvim/undo.c b/src/nvim/undo.c
+index 11f4d556..d1a0bfdf 100644
+--- a/src/nvim/undo.c
++++ b/src/nvim/undo.c
+@@ -970,12 +970,12 @@ static u_entry_T *unserialize_uep(bufinfo_T * bi, bool 
*error,
+   uep->ue_lcount = undo_read_4c(bi);
+   uep->ue_size = undo_read_4c(bi);
+ 
+-  char_u **array;
++  char_u **array = NULL;
+   if (uep->ue_size > 0) {
+-    array = xmalloc(sizeof(char_u *) * (size_t)uep->ue_size);
+-    memset(array, 0, sizeof(char_u *) * (size_t)uep->ue_size);
+-  } else {
+-    array = NULL;
++    if ((size_t)uep->ue_size < SIZE_MAX / sizeof(char_u *)) {
++      array = xmalloc(sizeof(char_u *) * (size_t)uep->ue_size);
++      memset(array, 0, sizeof(char_u *) * (size_t)uep->ue_size);
++    }
+   }
+   uep->ue_array = array;
+ 
diff -Nru neovim-0.1.7/debian/patches/series neovim-0.1.7/debian/patches/series
--- neovim-0.1.7/debian/patches/series  2017-01-16 07:18:35.000000000 -0500
+++ neovim-0.1.7/debian/patches/series  2017-04-10 08:15:38.000000000 -0400
@@ -2,3 +2,5 @@
 0001-debcherry-fixup-patch.patch
 0002-test-Handle-SIGHUP-in-tty-test-fixture.patch
 0003-tui-backpressure-Drop-messages-to-avoid-flooding.patch
+0004-vim-patch-8.0.0377.patch
+0005-vim-patch-8.0.0378.patch

Reply via email to