Package: liblockfile-bin
Version: 1.09-6
Severity: normal
Tags: patch

dotlockfile -r -1

doesn't work on x86_64 (haven't tried other archs) - instead of retrying
indefinitely, it never retries (behaves like "-r 0").

This seems to be due to an integer overflow, since:

        int             tries = retries + 1;

so if retries is already INT_MAX then adding one to it will cause it to
overfow.



-- System Information:
Debian Release: 8.4
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages liblockfile-bin depends on:
ii  libc6  2.19-18+deb8u4

liblockfile-bin recommends no packages.

liblockfile-bin suggests no packages.

-- no debconf information
--- liblockfile-1.09/dotlockfile.c.orig	2011-07-04 17:26:59.000000000 +0100
+++ liblockfile-1.09/dotlockfile.c	2016-04-27 15:46:31.302112422 +0100
@@ -31,6 +31,7 @@
 #include <errno.h>
 #include <maillock.h>
 #include <lockfile.h>
+#include <limits.h>
 
 #ifdef HAVE_GETOPT_H
 #include <getopt.h>
@@ -244,8 +245,10 @@
 				return L_ERROR;
 			}
 			if (retries == -1) {
-				/* 4000 years */
-				retries = 2147483647;
+				/* 4000 years with 32bit signed int.  *
+				 * Prevent overflow when we later set *
+				 * tries to retries plus 1            */
+				retries = INT_MAX - 1; 
 			}
 			break;
 		case 'm':

Reply via email to