|
@@ -0,0 +1,38 @@
|
|
|
+Subject: The cdf_count_chain function does not properly validate sector-count data
|
|
|
+ID: CVE-2014-3480
|
|
|
+Author: Christos Zoulas <christos@zoulas.com>
|
|
|
+Date: Wed Jun 4 17:23:19 2014 +0000
|
|
|
+Origin:
|
|
|
+ commit 40bade80cbe2af1d0b2cd0420cebd5d5905a2382
|
|
|
+Debian-Author: Holger Levsen <holger@debian.org>
|
|
|
+Comment:
|
|
|
+ made apply cleanly based on [origin]
|
|
|
+Reviewed-By: Christoph Biedl <debian.axhn@manchmal.in-ulm.de>
|
|
|
+Last-Update: 2014-09-07
|
|
|
+
|
|
|
+ Fix incorrect bounds check for sector count. (Francisco Alonso and Jan Kaluza
|
|
|
+ at RedHat)
|
|
|
+
|
|
|
+--- a/src/cdf.c
|
|
|
++++ b/src/cdf.c
|
|
|
+@@ -460,7 +460,8 @@
|
|
|
+ cdf_count_chain(const cdf_sat_t *sat, cdf_secid_t sid, size_t size)
|
|
|
+ {
|
|
|
+ size_t i, j;
|
|
|
+- cdf_secid_t maxsector = (cdf_secid_t)(sat->sat_len * size);
|
|
|
++ cdf_secid_t maxsector = (cdf_secid_t)((sat->sat_len * size)
|
|
|
++ / sizeof(maxsector));
|
|
|
+
|
|
|
+ DPRINTF(("Chain:"));
|
|
|
+ for (j = i = 0; sid >= 0; i++, j++) {
|
|
|
+@@ -470,8 +471,8 @@
|
|
|
+ errno = EFTYPE;
|
|
|
+ return (size_t)-1;
|
|
|
+ }
|
|
|
+- if (sid > maxsector) {
|
|
|
+- DPRINTF(("Sector %d > %d\n", sid, maxsector));
|
|
|
++ if (sid >= maxsector) {
|
|
|
++ DPRINTF(("Sector %d >= %d\n", sid, maxsector));
|
|
|
+ errno = EFTYPE;
|
|
|
+ return (size_t)-1;
|
|
|
+ }
|