1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| | Fix CVE-2017-11110:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11110
https://bugzilla.redhat.com/show_bug.cgi?id=1468471
https://security-tracker.debian.org/tracker/CVE-2017-11110
Patch copied from openSUSE:
https://build.opensuse.org/package/view_file/openSUSE:Maintenance:6985/catdoc.openSUSE_Leap_42.2_Update/CVE-2017-11110.patch?expand=1
From: Andreas Stieger <astieger@suse.com>
Date: Mon, 10 Jul 2017 15:37:58 +0000
References: CVE-2017-11110 http://bugzilla.suse.com/show_bug.cgi?id=1047877
All .doc I found had sectorSize 0x09 at offset 0x1e. Guarding it against <4.
---
src/ole.c | 5 +++++
1 file changed, 5 insertions(+)
Index: catdoc-0.95/src/ole.c
===================================================================
--- catdoc-0.95.orig/src/ole.c 2016-05-25 06:37:12.000000000 +0200
+++ catdoc-0.95/src/ole.c 2017-07-10 17:42:33.578308107 +0200
@@ -106,6 +106,11 @@ FILE* ole_init(FILE *f, void *buffer, si
return NULL;
}
sectorSize = 1<<getshort(oleBuf,0x1e);
+ /* CVE-2017-11110) */
+ if (sectorSize < 4) {
+ fprintf(stderr,"sectorSize < 4 not supported\n");
+ return NULL;
+ }
shortSectorSize=1<<getshort(oleBuf,0x20);
/* Read BBD into memory */
@@ -147,7 +152,7 @@ FILE* ole_init(FILE *f, void *buffer, si
}
fseek(newfile, 512+mblock*sectorSize, SEEK_SET);
- if(fread(tmpBuf+MSAT_ORIG_SIZE+(sectorSize-4)*i,
+ if(fread(tmpBuf+MSAT_ORIG_SIZE+(sectorSize-4)*i, /* >= 4 for CVE-2017-11110 */
1, sectorSize, newfile) != sectorSize) {
fprintf(stderr, "Error read MSAT!\n");
ole_finish();
|