Hi! We've fixed several regressions on the 1.15.x series, and I'd like to upload a new 1.15.8.11 release targetting squeeze. I'm attaching the interesting git commits (omitted translations and a revert). Maybe there will still be additional translation updates before the upload though. Here's the changelog:
dpkg (1.15.8.11) stable; urgency=low [ Guillem Jover ] * Do not segfault on “dpkg -i --no-act”. * Add missing semicolon to the vsnprintf() compat declaration. Thanks to Robert Millan. Closes: #612203 * Fix typo in «dpkg-name --overwrite» argument parsing so that it actually works at all. Thanks to Ivan Gagis <iga...@gmail.com>. LP: #728708 * Fix dpkg-split to not corrupt binary part metadata when generating the split packages on 32-bit systems. [ Raphaël Hertzog ] * Fix a regression in dpkg-divert where using --rename led to a failure when the rename implies crossing file systems. Thanks to Durk Strooisma for spotting it. [ Updated dpkg translations ] * German (Sven Joachim). [ Updated man page translations ] * German (Helge Kreutzmann). Minor fixe(s). -- Guillem Jover <guil...@debian.org> Sun, 17 Apr 2011 07:27:13 +0200 The git branch for squeeze can be found at: <http://git.debian.org/?p=dpkg/dpkg.git;a=shortlog;h=refs/heads/squeeze> Would such upload be fine? thanks, guillem
commit 3be9001824ac3eb1b7e2cd6bfee67eb35166dab6 Author: Guillem Jover <guil...@debian.org> Date: Fri Apr 15 06:02:34 2011 +0200 dpkg-split: Do not corrupt binary part metadata on 32-bit systems On 32-bit systems the format string used to generate the metadata archive member of a split package specifies a 32-bit value to be retrieved from va_arg, but the variable passed is a 64-bit one, which messes with the layout of the stack, producing garbage on output. Regression introduced in commit f2115151c19ff37b305296c23225807b0832086b. diff --git a/debian/changelog b/debian/changelog index d9d01ca..21371f0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,8 @@ dpkg (1.15.8.11) UNRELEASED; urgency=low Thanks to Robert Millan. Closes: #612203 * Fix typo in «dpkg-name --overwrite» argument parsing so that it actually works at all. Thanks to Ivan Gagis <iga...@gmail.com>. LP: #728708 + * Fix dpkg-split to not corrupt binary part metadata when generating the + split packages on 32-bit systems. [ Raphaël Hertzog ] * Fix a regression in dpkg-divert where using --rename led to a failure when diff --git a/dpkg-split/split.c b/dpkg-split/split.c index 46262f1..324c885 100644 --- a/dpkg-split/split.c +++ b/dpkg-split/split.c @@ -206,7 +206,7 @@ mksplit(const char *file_src, const char *prefix, size_t partsize, /* Write the debian-split part. */ varbufprintf(&partmagic, "%s\n%s\n%s\n%s\n%zu\n%zu\n%d/%d\n", SPLITVERSION, package, version, hash, - st.st_size, partsize, curpart, nparts); + (size_t)st.st_size, partsize, curpart, nparts); dpkg_ar_member_put_mem(file_dst.buf, fd_dst, PARTMAGIC, partmagic.buf, partmagic.used); varbufreset(&partmagic); commit de3dcef863d389af305009bbd12862c537be99e4 Author: Ivan Gagis <iga...@gmail.com> Date: Wed Mar 9 05:18:09 2011 +0100 dpkg-name: Fix typo in --overwrite argument parsing Cherry picked from commit 8a910bc7aadd0525fe24b14c8d6249f77bba15b7. This fixes the option so that it actually works at all. LP: #728708 Signed-off-by: Guillem Jover <guil...@debian.org> diff --git a/debian/changelog b/debian/changelog index b1821d5..d9d01ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,8 @@ dpkg (1.15.8.11) UNRELEASED; urgency=low * Do not segfault on “dpkg -i --no-act”. * Add missing semicolon to the vsnprintf() compat declaration. Thanks to Robert Millan. Closes: #612203 + * Fix typo in «dpkg-name --overwrite» argument parsing so that it actually + works at all. Thanks to Ivan Gagis <iga...@gmail.com>. LP: #728708 [ Raphaël Hertzog ] * Fix a regression in dpkg-divert where using --rename led to a failure when diff --git a/scripts/dpkg-name.pl b/scripts/dpkg-name.pl index 6745ac1..30c1aa6 100755 --- a/scripts/dpkg-name.pl +++ b/scripts/dpkg-name.pl @@ -233,7 +233,7 @@ while (@ARGV) { $options{destdir} = shift(@ARGV); } } elsif (m/^-o|--overwrite$/) { - $options{overwite} = 1; + $options{overwrite} = 1; } elsif (m/^-k|--symlink$/) { $options{symlink} = 1; } elsif (m/^-a|--no-architecture$/) { commit 9387f083bec3d94312e1f80162a29d73809feded Author: Raphaël Hertzog <hert...@debian.org> Date: Thu Mar 17 14:35:53 2011 +0100 dpkg-divert: fix return value of rename_mv This is a regression introduced by the C rewrite of dpkg-divert (commit 02b12d75f1eff7c184fafb5a663a0421e9a645ea) that made it unable to rename files when that rename implies a copy on another file system. The code has provision to do a copy when a simple rename is not enough but the associated function erroneously returned a failure value when that operation was performed. Reported-by: Durk Strooisma diff --git a/debian/changelog b/debian/changelog index 61f863b..8ea05ab 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,11 @@ dpkg (1.15.8.11) UNRELEASED; urgency=low * Add missing semicolon to the vsnprintf() compat declaration. Thanks to Robert Millan. Closes: #612203 + [ Raphaël Hertzog ] + * Fix a regression in dpkg-divert where using --rename led to a failure when + the rename implies crossing file systems. Thanks to Durk Strooisma for + spotting it. + [ Updated man page translations ] * German (Helge Kreutzmann). Minor fixe(s). diff --git a/src/divertcmd.c b/src/divertcmd.c index 1e7614f..3b176af 100644 --- a/src/divertcmd.c +++ b/src/divertcmd.c @@ -256,7 +256,7 @@ rename_mv(const char *src, const char *dst) varbuf_destroy(&tmpdst); - return -1; + return 0; } static void commit 3acdaa7eef463d147b883bac3b55611762dd747c Author: Robert Millan <r...@debian.org> Date: Sun Feb 6 21:31:52 2011 +0100 libcompat: Add missing semicolon to vsnprintf() declaration Cherry picked from commit d09ad2efd0b93bb69eb6dd74f643717f6fe35242. This makes the build fail on systems where vsnprintf() is missing or not compliant enough, and thus the fallback is being used. Closes: #612203 Signed-off-by: Guillem Jover <guil...@debian.org> diff --git a/debian/changelog b/debian/changelog index 0bd3b0e..61f863b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,8 @@ dpkg (1.15.8.11) UNRELEASED; urgency=low [ Guillem Jover ] * Fix build failure when passing --disable-nls to configure. * Do not segfault on “dpkg -i --no-act”. + * Add missing semicolon to the vsnprintf() compat declaration. + Thanks to Robert Millan. Closes: #612203 [ Updated man page translations ] * German (Helge Kreutzmann). Minor fixe(s). diff --git a/lib/compat/compat.h b/lib/compat/compat.h index 80de53e..5269a9c 100644 --- a/lib/compat/compat.h +++ b/lib/compat/compat.h @@ -54,7 +54,7 @@ extern "C" { #include <stdarg.h> int snprintf(char *str, size_t n, char const *fmt, ...); -int vsnprintf(char *buf, size_t maxsize, const char *fmt, va_list args) +int vsnprintf(char *buf, size_t maxsize, const char *fmt, va_list args); #endif #ifndef HAVE_ASPRINTF commit 420c62ccbf88e7c961e586946eb1464e9ede2a31 Author: Guillem Jover <guil...@debian.org> Date: Fri Feb 4 18:59:00 2011 +0100 dpkg: Do not segfault on “dpkg -i --no-act” Cherry picked from commit da5fceca72b4c67be8acdb0734dbf7c241519dff. mkdtemp() takes the string allocated by path_make_temp_template() and modifies it, but there's not enough allocated room for the subsequent string appends done starting from cidirrest, for the control files. Regression introduced in commit ffccc65580189420a0a64736bba0fb661de56dcb. diff --git a/debian/changelog b/debian/changelog index 852be90..0bd3b0e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ dpkg (1.15.8.11) UNRELEASED; urgency=low [ Guillem Jover ] * Fix build failure when passing --disable-nls to configure. + * Do not segfault on “dpkg -i --no-act”. [ Updated man page translations ] * German (Helge Kreutzmann). Minor fixe(s). diff --git a/src/processarc.c b/src/processarc.c index e2d2a30..0b33b25 100644 --- a/src/processarc.c +++ b/src/processarc.c @@ -193,14 +193,21 @@ void process_archive(const char *filename) { if (f_noact) { + char *tmpdir; + if (!cidirbuf) free(cidirbuf); - cidir = cidirbuf = mkdtemp(path_make_temp_template("dpkg")); - if (!cidir) + tmpdir = mkdtemp(path_make_temp_template("dpkg")); + if (!tmpdir) ohshite(_("unable to create temporary directory")); + + cidir = cidirbuf = m_malloc(strlen(tmpdir) + MAXCONTROLFILENAME + 10); + strcpy(cidir, tmpdir); strcat(cidir,"/"); cidirrest = cidir + strlen(cidir); + + free(tmpdir); } else { /* We want it to be on the same filesystem so that we can * use rename(2) to install the postinst &c.