Hi,

We have a large binary on a 32-bit host where the following command failed:

eu-strip -o foo.stripped -f foo.debug foo

eu-strip: while computing checksum for debug information: Invalid argument

Here, foo.debug is over 2 GB. The crc code called pread() with a
negative offset because crc32_file.c does not have LFS, off_t is only
32-bit, and the offset variable overflowed.
From db81c4d7b33b9045ff6f54fc7221f396f02e9d8a Mon Sep 17 00:00:00 2001
From: Lei Zhang <[email protected]>
Date: Fri, 17 Jan 2014 03:20:45 -0800
Subject: [PATCH] lib: Add missing config.h #include to crc32_file.c.

Without config.h, there is no possibility of large file support.
---
 lib/crc32_file.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/crc32_file.c b/lib/crc32_file.c
index 9a168f6..c0b18e9 100644
--- a/lib/crc32_file.c
+++ b/lib/crc32_file.c
@@ -26,6 +26,10 @@
    the GNU Lesser General Public License along with this program.  If
    not, see <http://www.gnu.org/licenses/>.  */
 
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 #include "system.h"
 #include <errno.h>
 #include <unistd.h>
-- 
1.8.5.2

Reply via email to