[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[SRM] dpkg 1.15.8.11 for squeeze



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 <igagis@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 <guillem@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 <guillem@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 <igagis@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 <igagis@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 <guillem@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 <igagis@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 <hertzog@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 <rmh@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 <guillem@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 <guillem@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.


Reply to: