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

Bug#1035672: marked as done (unblock: inn2/2.7.1-1)



Your message dated Thu, 11 May 2023 10:03:40 +0200
with message-id <40b69eb0-9cda-1ff8-6182-d9d4247cd800@debian.org>
and subject line Re: Bug#1035672: unblock: inn2/2.7.1-1
has caused the Debian Bug report #1035672,
regarding unblock: inn2/2.7.1-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1035672: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1035672
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: inn2@packages.debian.org
Control: affects -1 + src:inn2

Please unblock package inn2

This is the diff betwwen 2.7.1 RC1 and 2.7.1.
It contains many documentation fixes, small fixes to pullnews and 
a significant for ovsqlite-util.
It also adds a versioned Breaks on manpages-dev which fixes the RC bug 
#1035098.

The 2.7.1 package is being used in production on one of my news servers.

Follows the git diff between debian/2.7.1_20230322-1 and debian/2.7.1-1,
abridged of whitespace and documentation changes.
The full changelog can be consulted at
https://salsa.debian.org/md/inn2/-/commits/master .

The package has a fairly decent autopkgtest but it currently cannot work 
on the Debian infrastructure, because the workers do not have valid 
hostnames. I will find a solution after the release, so please bear with 
me once more. :-)


unblock inn2/2.7.1-1



diff --git a/Makefile.global.in b/Makefile.global.in
index db42dee2e..3a84f23e7 100644
--- a/Makefile.global.in
+++ b/Makefile.global.in
@@ -20,7 +20,7 @@
 ##      be complying with the NNTP protocol.
 
 VERSION		= 2.7.1
-VERSION_EXTRA	= rc1 version
+VERSION_EXTRA	=
 
 ##  The absolute path to the top of the build directory, used to find the
 ##  libraries built as part of INN.  Using relative paths confuses libtool
diff --git a/backends/news2mail.in b/backends/news2mail.in
index bef6ca86a..952cf4610 100644
--- a/backends/news2mail.in
+++ b/backends/news2mail.in
@@ -104,9 +104,15 @@ sub mailto {
     my ($t, $s, @a) = @_;
 
     my $sendmail = $INN::Config::mta;
+    # Remove %s and -f from the mta command line (we'll explicitly set
+    # recipients and an envelope sender below).
+    # Remove -oem as we'll set -oee so that sendmail exits with a
+    # non-zero status only if the mail cannot be sent.
     $sendmail =~ s!\s*%s!!;
+    $sendmail =~ s!(^|\s+)-f\s*\S*!!;
+    $sendmail =~ s!(^|\s+)-oem!!;
     my @command = (
-        split(' ', $sendmail), '-ee', '-odq', "-f$s",
+        split(' ', $sendmail), '-oee', '-odq', "-f$s",
         "-pNNTP:$INN::Config::pathhost", @a
     );
 
diff --git a/debian/changelog b/debian/changelog
index eff319e64..eeaf10caa 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+inn2 (2.7.1-1) unstable; urgency=medium
+
+  * New upstream release.
+  * Breaks manpages-dev << 6.03-2 to make upgrades smoother, because of
+    file(3) and list(3) removed from inn2-dev 2.6.5-1. (Closes: #1035098)
+
+ -- Marco d'Itri <md@linux.it>  Mon, 01 May 2023 19:25:42 +0200
+
 inn2 (2.7.1~20230322-1) unstable; urgency=medium
 
   * New release candidate 1 of the stable branch.
diff --git a/debian/control b/debian/control
index 93d37618c..8d7089372 100644
--- a/debian/control
+++ b/debian/control
@@ -63,6 +63,7 @@ Package: inn2-dev
 Section: devel
 Architecture: any
 Depends: ${misc:Depends}
+Breaks: manpages-dev (<< 6.03-2)
 Conflicts: inn
 Description: libinn.a library, headers and man pages
  You will only need this if you are going to compile programs that
diff --git a/frontends/pullnews.in b/frontends/pullnews.in
index b21ce29b4..0d8809cec 100644
--- a/frontends/pullnews.in
+++ b/frontends/pullnews.in
@@ -100,6 +100,7 @@ my $defaultRetryTime = 1;
 my $defaultProgressWidth = 50;
 my $defaultMaxArts;
 my $lockfile;
+my $runEndBlock = 0;
 
 # Check whether pullnews is run inside INN.
 my $use_inn_shlock = 0;
@@ -120,6 +121,8 @@ if (not $use_inn_shlock) {
 }
 
 END {
+    return unless $runEndBlock;
+
     # In case we bail out, while holding a lock.
     if ($use_inn_shlock) {
         INN::Utils::Shlock::releaselocks();
@@ -423,7 +426,7 @@ if ($use_inn_shlock) {
     INN::Utils::Shlock::lock($lockfile)
       or die "cannot create lockfile $lockfile\n";
 } else {
-    sysopen(LOCK, "$lockfile", O_RDWR | O_CREAT, 0700)
+    sysopen(LOCK, "$lockfile", O_RDWR | O_CREAT, 0644)
       or die "cannot create lockfile $lockfile: $!\n";
     $oldfh = select;
     select LOCK;
@@ -439,6 +442,9 @@ if ($use_inn_shlock) {
 
     print LOCK "$$\n";
 }
+# Now that a lock file has been created, ensure we release it when this process
+# ends or is stopped.
+$runEndBlock = 1;
 
 print LOG scalar(localtime(time)), " start\n\n" unless $quiet;
 
@@ -554,6 +560,7 @@ if (not $quiet and not $quietness) {
 }
 
 my $connectionAttempts = 0;
+my %groupsStarted = ();
 
 UPSTREAM:
 foreach my $server (@servers) {
@@ -683,6 +690,7 @@ foreach my $server (@servers) {
 } continue {
     # Reinitialize the counter for the next server.
     $connectionAttempts = 0;
+    %groupsStarted = ();
 }
 
 saveConfig();
@@ -768,7 +776,8 @@ sub stats {
 sub saveConfig {
     return if $no_op;
 
-    $SIG{INT} = $SIG{QUIT} = 'IGNORE';
+    local $SIG{INT} = 'IGNORE';
+    local $SIG{QUIT} = 'IGNORE';
 
     open(FILE, ">$groupFile") || die "can't open $groupFile: $!\n";
     my $server;
@@ -846,12 +854,18 @@ sub crossFeedGroup {
         printf LOG "\t%d article%s available (first %d, last %d)\n",
           $narticles, $narticles != 1 ? "s" : "", $first, $last;
     }
-    if (defined $watermark) {
+
+    # Do not set several times the water mark to another value.  Just go on
+    # downloading articles from the last retrieved one when the connection
+    # timed out.
+    if (defined($watermark) and !exists($groupsStarted{$group})) {
         printf LOG "\tOur previous highest: %d\n", $prevHigh if not $quiet;
         $high = $watermark;
         $high = $last + $watermark if substr($watermark, 0, 1) eq '-';
         $high = 0 if $high < 0;
         $shash->{$group} = [time, $high];
+        $prevHigh = $high;
+        $groupsStarted{$group} = 1;
     }
     printf LOG "\tOur current highest: %d", $high if not $quiet;
 
@@ -964,7 +979,7 @@ sub crossFeedGroup {
                     }
                 }
                 $add_bytes_header = 1 if not $has_bytes_header;
-                push @{$article}, "\n" if not $is_control_art;
+                push @{$article}, "\r\n" if not $is_control_art;
             }
         }
 
@@ -1001,7 +1016,7 @@ sub crossFeedGroup {
                 $idx_blank_pre_body = $idx;
 
                 $curr_hdr = lc($1) if $article->[$idx] =~ /^([^:[:blank:]]+):/;
-                if ($article->[$idx] eq "\n") {
+                if ($article->[$idx] eq "\r\n") {
                     $headers = 0;
                     next;
                 }
diff --git a/innd/rc.c b/innd/rc.c
index 6e6f1a127..b65e3a2ab 100644
--- a/innd/rc.c
+++ b/innd/rc.c
@@ -61,7 +61,6 @@ typedef struct _REMOTETABLE {
     time_t Expires;
 } REMOTETABLE;
 
-static char *RCslaveflag;
 static char *RCnnrpd = NULL;
 static char *RCnntpd = NULL;
 static CHANNEL **RCchan;
@@ -424,8 +423,6 @@ RChandoff(int fd, HANDOFF h)
     }
     if (NNRPTracing)
         argv[i++] = "-t";
-    if (RCslaveflag)
-        argv[i++] = RCslaveflag;
 
     for (j = 0; j < flags->count; j++) {
         argv[i++] = flags->strings[j];
diff --git a/lib/setproctitle.c b/lib/setproctitle.c
index fd5e75351..a5a0212ca 100644
--- a/lib/setproctitle.c
+++ b/lib/setproctitle.c
@@ -77,7 +77,8 @@ setproctitle(const char *format, ...)
     title = title_start;
     *title++ = '-';
     *title++ = ' ';
-    length = title_end - title_start - 2;
+    /* Remaining length after initial "- ". */
+    length = (title_end - title_start + 1) - 2;
 
     /* Now, put in the actual content.  Get the program name from
        message_program_name if it's set. */
diff --git a/storage/ovsqlite/ovsqlite-util.in b/storage/ovsqlite/ovsqlite-util.in
index 626949b82..f86b8392e 100644
--- a/storage/ovsqlite/ovsqlite-util.in
+++ b/storage/ovsqlite/ovsqlite-util.in
@@ -346,7 +345,7 @@ insert into repairs
          expired, groupname, flag_alias)
     select groupid,
             new_low, new_low != low as low_was_bad,
-            new_high, new_high != high as high_was_bad,
+            new_high, new_high > high as high_was_bad,
             new_count, new_count != "count" as count_was_bad,
             expired, groupname, flag_alias
         from new_stats
diff --git a/support/getrra-c-util b/support/getrra-c-util
index 84f688614..4ee537f58 100755
--- a/support/getrra-c-util
+++ b/support/getrra-c-util
@@ -40,10 +40,12 @@ download() {
         # Update the path of included C header files.
         # Change "RRA_" to "INN_", "rra_" to "inn_", and "UTIL_" to "INN_"
         # so as to keep a homogeneous naming convention in INN source code.
+        # Also remove the first 2 lines containing an internal serial number.
         # Changes in shell, m4 and C files are not the same.
         if [ "$2" = "m4" ]; then
             sed -i -e 's/RRA_/INN_/g' \
                 -e 's/rra_/inn_/g' \
+                -e '1,2d' \
                 ${TEMP}
 
             # Remove useless function for INN.

The rest is just the test suite:

diff --git a/tests/lib/fakewrite.c b/tests/lib/fakewrite.c
index 1467b1415..2b0a73fa1 100644
--- a/tests/lib/fakewrite.c
+++ b/tests/lib/fakewrite.c
@@ -4,7 +4,7 @@
  * The canonical version of this file is maintained in the rra-c-util package,
  * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
  *
- * Copyright 2000-2002, 2004, 2017 Russ Allbery <eagle@eyrie.org>
+ * Copyright 2000-2002, 2004, 2017, 2023 Russ Allbery <eagle@eyrie.org>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -64,7 +64,7 @@ bool write_fail = false;
 ssize_t
 fake_write(int fd UNUSED, const void *data, size_t n)
 {
-    size_t total;
+    size_t total, left;
 
     if (write_fail)
         return 0;
@@ -72,9 +72,14 @@ fake_write(int fd UNUSED, const void *data, size_t n)
         errno = EINTR;
         return -1;
     }
-    total = (n < 32) ? n : 32;
-    if (256 - write_offset < total)
-        total = 256 - write_offset;
+    if (write_offset >= sizeof(write_buffer)) {
+        errno = ENOSPC;
+        return 0;
+    }
+    left = sizeof(write_buffer) - write_offset;
+    if (left > 32)
+        left = 32;
+    total = (n < left) ? n : left;
     memcpy(write_buffer + write_offset, data, total);
     write_offset += total;
     return total;
@@ -89,7 +94,7 @@ fake_write(int fd UNUSED, const void *data, size_t n)
 ssize_t
 fake_pwrite(int fd UNUSED, const void *data, size_t n, off_t offset)
 {
-    size_t total;
+    size_t total, left;
 
     if (write_fail)
         return 0;
@@ -97,13 +102,14 @@ fake_pwrite(int fd UNUSED, const void *data, size_t n, off_t offset)
         errno = EINTR;
         return -1;
     }
-    total = (n < 32) ? n : 32;
-    if (offset > 256) {
+    if (offset >= (ssize_t) sizeof(write_buffer)) {
         errno = ENOSPC;
         return -1;
     }
-    if ((size_t) (256 - offset) < total)
-        total = 256 - offset;
+    left = sizeof(write_buffer) - offset;
+    if (left > 32)
+        left = 32;
+    total = (n < left) ? n : left;
     memcpy(write_buffer + offset, data, total);
     return total;
 }
@@ -125,7 +131,7 @@ fake_writev(int fd UNUSED, const struct iovec *iov, int iovcnt)
         errno = EINTR;
         return -1;
     }
-    left = 256 - write_offset;
+    left = sizeof(write_buffer) - write_offset;
     if (left > 32)
         left = 32;
     total = 0;
diff --git a/tests/lib/getnameinfo-t.c b/tests/lib/getnameinfo-t.c
index 93991eeb1..24864fc06 100644
--- a/tests/lib/getnameinfo-t.c
+++ b/tests/lib/getnameinfo-t.c
@@ -5,7 +5,7 @@
  * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
  *
  * Written by Russ Allbery <eagle@eyrie.org>
- * Copyright 2005-2006, 2014, 2018, 2022 Russ Allbery <eagle@eyrie.org>
+ * Copyright 2005-2006, 2014, 2018, 2022-2023 Russ Allbery <eagle@eyrie.org>
  * Copyright 2007-2011
  *     The Board of Trustees of the Leland Stanford Junior University
  *
@@ -150,7 +150,8 @@ main(void)
     inet_aton("0.0.0.0", &sin.sin_addr);
     status = test_getnameinfo(sa, sizeof(sin), node, sizeof(node), NULL, 0, 0);
     is_int(0, status, "lookup of 0.0.0.0");
-    hp = gethostbyaddr(sa, sizeof(sin), AF_INET);
+    hp = gethostbyaddr((const void *) &sin.sin_addr, sizeof(sin.sin_addr),
+                       AF_INET);
     if (hp != NULL)
         skip_block(2, "0.0.0.0 resolves to a hostname");
     else {
diff --git a/tests/lib/network/server-t.c b/tests/lib/network/server-t.c
index 9e543efdc..4f30602cd 100644
--- a/tests/lib/network/server-t.c
+++ b/tests/lib/network/server-t.c
@@ -5,7 +5,7 @@
  * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
  *
  * Written by Russ Allbery <eagle@eyrie.org>
- * Copyright 2005, 2013, 2016-2018, 2020 Russ Allbery <eagle@eyrie.org>
+ * Copyright 2005, 2013, 2016-2018, 2020, 2023 Russ Allbery <eagle@eyrie.org>
  * Copyright 2009-2013
  *     The Board of Trustees of the Leland Stanford Junior University
  *
@@ -282,10 +282,6 @@ test_server_accept(socket_type fd)
  * come from other addresses.  Hosts that only have IPv6 interfaces will see a
  * client connection on ::1 instead.  Avoid checking if the client IP is
  * 127.0.0.1 for that reason.  Hopefully this won't hide bugs.
- *
- * saddr is allocated from the heap instead of using a local struct
- * sockaddr_storage to work around a misdiagnosis of strict aliasing
- * violations from gcc 4.4 (fixed in later versions).
  */
 static void
 test_server_accept_any(socket_type fds[], unsigned int count)
@@ -298,7 +294,13 @@ test_server_accept_any(socket_type fds[], unsigned int count)
     /* If there are firewalls that block connections, we could hang here. */
     alarm(5);
 
-    /* Accept the connection and writes from the client. */
+    /*
+     * Accept the connection and writes from the client.
+     *
+     * saddr is allocated from the heap instead of using a local struct
+     * sockaddr_storage to work around a misdiagnosis of strict aliasing
+     * violations from gcc 4.4 (fixed in later versions).
+     */
     slen = sizeof(struct sockaddr_storage);
     saddr = bcalloc(1, slen);
     client = network_accept_any(fds, count, saddr, &slen);
@@ -407,7 +409,9 @@ get_sockaddr(socket_type fd)
     size = sizeof(struct sockaddr_storage);
     if (getsockname(fd, saddr, &size) < 0)
         sysbail("cannot getsockname");
-    if (size > sizeof(struct sockaddr)) {
+
+    /* This seems highly unlikely, but handle it anyway. */
+    if (size > sizeof(struct sockaddr_storage)) {
         free(saddr);
         saddr = bmalloc(size);
         if (getsockname(fd, saddr, &size) < 0)
diff --git a/tests/runtests.c b/tests/runtests.c
index 72f4a70d9..3fd55a525 100644
--- a/tests/runtests.c
+++ b/tests/runtests.c
@@ -408,7 +408,7 @@ x_reallocarray(void *p, size_t n, size_t size, const char *file, int line)
     n = (n > 0) ? n : 1;
     size = (size > 0) ? size : 1;
 
-    if (n > 0 && UINT_MAX / n <= size)
+    if (UINT_MAX / n <= size)
         sysdie("realloc too large at %s line %d", file, line);
     p = realloc(p, n * size);
     if (p == NULL)

-- 
ciao,
Marco

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
Hi Marco,

On 07-05-2023 17:41, Marco d'Itri wrote:
unblock inn2/2.7.1-1

done.

Please note that this request was slightly over the edge of "targeted fixes" in this phase of the release (new upstream version with too many whitespace and comment changes).

Paul

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


--- End Message ---

Reply to: