1 |
From 40bade80cbe2af1d0b2cd0420cebd5d5905a2382 Mon Sep 17 00:00:00 2001 |
2 |
From: Christos Zoulas <christos@zoulas.com> |
3 |
Date: Wed, 4 Jun 2014 17:23:19 +0000 |
4 |
Subject: [PATCH] Fix incorrect bounds check for sector count. (Francisco |
5 |
Alonso and Jan Kaluza at RedHat) |
6 |
|
7 |
--- |
8 |
src/cdf.c | 9 +++++---- |
9 |
1 file changed, 5 insertions(+), 4 deletions(-) |
10 |
|
11 |
diff --git a/src/cdf.c b/src/cdf.c |
12 |
index 375406c..6652581 100644 |
13 |
--- a/ext/fileinfo/libmagic/cdf.c |
14 |
+++ b/ext/fileinfo/libmagic/cdf.c |
15 |
@@ -455,7 +455,8 @@ size_t |
16 |
cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size) |
17 |
{ |
18 |
size_t i, j; |
19 |
- cdf_secid_t maxsector = (cdf_secid_t)(sat->sat_len * size); |
20 |
+ cdf_secid_t maxsector = (cdf_secid_t)((sat->sat_len * size) |
21 |
+ / sizeof(maxsector)); |
22 |
|
23 |
DPRINTF(("Chain:")); |
24 |
for (j = i = 0; sid >= 0; i++, j++) { |
25 |
@@ -465,8 +466,8 @@ cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size) |
26 |
errno = EFTYPE; |
27 |
return (size_t)-1; |
28 |
} |
29 |
- if (sid > maxsector) { |
30 |
- DPRINTF(("Sector %d > %d\n", sid, maxsector)); |
31 |
+ if (sid >= maxsector) { |
32 |
+ DPRINTF(("Sector %d >= %d\n", sid, maxsector)); |
33 |
errno = EFTYPE; |
34 |
return (size_t)-1; |
35 |
} |
36 |
-- |
37 |
1.9.3 |
38 |
|