summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meta/recipes-devtools/dpkg/dpkg/dpkg-1.17.4-CVE-2014-0471-CVE-2014-3127.patch68
-rw-r--r--meta/recipes-devtools/dpkg/dpkg_1.17.4.bb1
2 files changed, 69 insertions, 0 deletions
diff --git a/meta/recipes-devtools/dpkg/dpkg/dpkg-1.17.4-CVE-2014-0471-CVE-2014-3127.patch b/meta/recipes-devtools/dpkg/dpkg/dpkg-1.17.4-CVE-2014-0471-CVE-2014-3127.patch
new file mode 100644
index 0000000000..e59c6661ea
--- /dev/null
+++ b/meta/recipes-devtools/dpkg/dpkg/dpkg-1.17.4-CVE-2014-0471-CVE-2014-3127.patch
@@ -0,0 +1,68 @@
+dpkg: Security Advisory - CVE-2014-3127
+
+commit a12eb58959d0a10584a428f4a3103a49204c410f upstream
+
+dpkg 1.15.9 on Debian squeeze introduces support for the "C-style
+encoded filenames" feature without recognizing that the squeeze patch
+program lacks this feature, which triggers an interaction error that
+allows remote attackers to conduct directory traversal attacks and
+modify files outside of the intended directories via a crafted source
+package.
+
+NOTE: this can be considered a release engineering problem in the
+effort to fix CVE-2014-0471.
+
+Upstream-Status: Backport
+
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
+=====================================================
+diff -uarN dpkg-1.17.1-org/scripts/Dpkg/Source/Patch.pm dpkg-1.17.1/scripts/Dpkg/Source/Patch.pm
+--- dpkg-1.17.1-org/scripts/Dpkg/Source/Patch.pm 2014-06-05 16:32:41.765446564 +0800
++++ dpkg-1.17.1/scripts/Dpkg/Source/Patch.pm 2014-06-05 16:37:21.461446359 +0800
+@@ -324,31 +324,6 @@
+ return $line;
+ }
+
+-my %ESCAPE = ((
+- 'a' => "\a",
+- 'b' => "\b",
+- 'f' => "\f",
+- 'n' => "\n",
+- 'r' => "\r",
+- 't' => "\t",
+- 'v' => "\cK",
+- '\\' => '\\',
+- '"' => '"',
+-), (
+- map { sprintf('%03o', $_) => chr($_) } (0..255)
+-));
+-
+-sub _unescape {
+- my ($diff, $str) = @_;
+-
+- if (exists $ESCAPE{$str}) {
+- return $ESCAPE{$str};
+- } else {
+- error(_g('diff %s patches file with unknown escape sequence \\%s'),
+- $diff, $str);
+- }
+-}
+-
+ # Fetch the header filename ignoring the optional timestamp
+ sub _fetch_filename {
+ my ($diff, $header) = @_;
+@@ -358,12 +333,7 @@
+
+ # Is it a C-style string?
+ if ($header =~ m/^"/) {
+- $header =~ m/^"((?:[^\\"]|\\.)*)"/;
+- error(_g('diff %s patches file with unbalanced quote'), $diff)
+- unless defined $1;
+-
+- $header = $1;
+- $header =~ s/\\([0-3][0-7]{2}|.)/_unescape($diff, $1)/eg;
++ error(_g('diff %s patches file with C-style encoded filename'), $diff);
+ } else {
+ # Tab is the official separator, it's always used when
+ # filename contain spaces. Try it first, otherwise strip on space
diff --git a/meta/recipes-devtools/dpkg/dpkg_1.17.4.bb b/meta/recipes-devtools/dpkg/dpkg_1.17.4.bb
index 48e13948f0..83526f3c96 100644
--- a/meta/recipes-devtools/dpkg/dpkg_1.17.4.bb
+++ b/meta/recipes-devtools/dpkg/dpkg_1.17.4.bb
@@ -13,6 +13,7 @@ SRC_URI += "file://noman.patch \
file://glibc2.5-sync_file_range.patch \
file://no-vla-warning.patch \
file://dpkg-1.17.4-CVE-2014-0471.patch \
+ file://dpkg-1.17.4-CVE-2014-0471-CVE-2014-3127.patch \
"
SRC_URI[md5sum] = "cc25086e1e3bd9512a95f14cfe9002e1"