diff options
| -rw-r--r-- | meta/recipes-devtools/dpkg/dpkg/dpkg-1.17.4-CVE-2014-0471-CVE-2014-3127.patch | 68 | ||||
| -rw-r--r-- | meta/recipes-devtools/dpkg/dpkg_1.17.4.bb | 1 | 
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" | 
