|
|
3791cf |
From 89e6317c75b494905590903fadbfdc3c8d31e2b8 Mon Sep 17 00:00:00 2001
|
|
|
3791cf |
From: Stefan Berger <stefanb@us.ibm.com>
|
|
|
3791cf |
Date: Fri, 29 Apr 2016 07:09:49 -0400
|
|
|
3791cf |
Subject: [PATCH] Extend header size to 256MB due to file signatures
|
|
|
3791cf |
|
|
|
3791cf |
Extend the header size to 256MB in case an RPM has a lot of files
|
|
|
3791cf |
and the file signatures do not fit within the current limit of 16MB.
|
|
|
3791cf |
|
|
|
3791cf |
An example for an RPM with many files is kcbench-data-4.0. It contains
|
|
|
3791cf |
more than 52000 files. With each signature with a 2048 bit key requiring
|
|
|
3791cf |
256 bytes plus a preamble, its representation in text from, and other
|
|
|
3791cf |
overhead, the size of the header (index length and data length) exceeds
|
|
|
3791cf |
32Mb.
|
|
|
3791cf |
|
|
|
3791cf |
If this particular RPM's files have been signed using this patch, older
|
|
|
3791cf |
versions of the rpm tool will report the header being too large. So this
|
|
|
3791cf |
failure is expected then.
|
|
|
3791cf |
|
|
|
3791cf |
By setting the limit to 256MB we create a lot of room for the future.
|
|
|
3791cf |
|
|
|
3791cf |
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
|
|
|
3791cf |
---
|
|
|
3791cf |
lib/header.c | 2 +-
|
|
|
3791cf |
lib/header_internal.h | 5 +++--
|
|
|
3791cf |
2 files changed, 4 insertions(+), 3 deletions(-)
|
|
|
3791cf |
|
|
|
3791cf |
diff --git a/lib/header.c b/lib/header.c
|
|
|
3791cf |
index 81f2038..7f7c115 100644
|
|
|
3791cf |
--- a/lib/header.c
|
|
|
3791cf |
+++ b/lib/header.c
|
|
|
3791cf |
@@ -99,7 +99,7 @@ struct headerToken_s {
|
|
|
3791cf |
/** \ingroup header
|
|
|
3791cf |
* Maximum no. of bytes permitted in a header.
|
|
|
3791cf |
*/
|
|
|
3791cf |
-static const size_t headerMaxbytes = (32*1024*1024);
|
|
|
3791cf |
+static const size_t headerMaxbytes = (256*1024*1024);
|
|
|
3791cf |
|
|
|
3791cf |
#define INDEX_MALLOC_SIZE 8
|
|
|
3791cf |
|
|
|
3791cf |
diff --git a/lib/header_internal.h b/lib/header_internal.h
|
|
|
3791cf |
index bbe2097..aed3977 100644
|
|
|
3791cf |
--- a/lib/header_internal.h
|
|
|
3791cf |
+++ b/lib/header_internal.h
|
|
|
3791cf |
@@ -45,9 +45,10 @@ struct indexEntry_s {
|
|
|
3791cf |
|
|
|
3791cf |
/**
|
|
|
3791cf |
* Sanity check on data size and/or offset and/or count.
|
|
|
3791cf |
- * This check imposes a limit of 16 MB, more than enough.
|
|
|
3791cf |
+ * This check imposes a limit of 256 MB -- file signatures
|
|
|
3791cf |
+ * may require a lot of space in the header.
|
|
|
3791cf |
*/
|
|
|
3791cf |
-#define HEADER_DATA_MAX 0x00ffffff
|
|
|
3791cf |
+#define HEADER_DATA_MAX 0x0fffffff
|
|
|
3791cf |
#define hdrchkData(_nbytes) ((_nbytes) & (~HEADER_DATA_MAX))
|
|
|
3791cf |
|
|
|
3791cf |
/**
|
|
|
3791cf |
--
|
|
|
3791cf |
2.9.5
|
|
|
3791cf |
|