Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
GNOME
evince
Commits
d4139205
Commit
d4139205
authored
Dec 07, 2010
by
José Aliste
Browse files
backends: Fix several security issues in the dvi-backend.
See CVE-2010-2640, CVE-2010-2641, CVE-2010-2642 and CVE-2010-2643.
parent
42cc2bea
Changes
5
Hide whitespace changes
Inline
Side-by-side
backend/dvi/mdvi-lib/afmparse.c
View file @
d4139205
...
...
@@ -160,7 +160,7 @@ static char *token(FILE *stream)
idx
=
0
;
while
(
ch
!=
EOF
&&
ch
!=
' '
&&
ch
!=
lineterm
&&
ch
!=
'\t'
&&
ch
!=
':'
&&
ch
!=
';'
)
&&
ch
!=
'\t'
&&
ch
!=
':'
&&
ch
!=
';'
&&
idx
<
MAX_NAME
)
{
ident
[
idx
++
]
=
ch
;
ch
=
fgetc
(
stream
);
...
...
backend/dvi/mdvi-lib/dviread.c
View file @
d4139205
...
...
@@ -1507,6 +1507,10 @@ int special(DviContext *dvi, int opcode)
Int32
arg
;
arg
=
dugetn
(
dvi
,
opcode
-
DVI_XXX1
+
1
);
if
(
arg
<=
0
)
{
dvierr
(
dvi
,
_
(
"malformed special length
\n
"
));
return
-
1
;
}
s
=
mdvi_malloc
(
arg
+
1
);
dread
(
dvi
,
s
,
arg
);
s
[
arg
]
=
0
;
...
...
backend/dvi/mdvi-lib/pk.c
View file @
d4139205
...
...
@@ -469,6 +469,15 @@ static int pk_load_font(DviParams *unused, DviFont *font)
}
if
(
feof
(
p
))
break
;
/* Although the PK format support bigger char codes,
* XeTeX and other extended TeX engines support charcodes up to
* 65536, while normal TeX engine supports only charcode up to 255.*/
if
(
cc
<
0
||
cc
>
65536
)
{
mdvi_error
(
_
(
"%s: unexpected charcode (%d)
\n
"
),
font
->
fontname
,
cc
);
goto
error
;
}
if
(
cc
<
loc
)
loc
=
cc
;
if
(
cc
>
hic
)
...
...
@@ -512,7 +521,7 @@ static int pk_load_font(DviParams *unused, DviFont *font)
}
/* resize font char data */
if
(
loc
>
0
||
hic
<
maxch
-
1
)
{
if
(
loc
>
0
&&
hic
<
maxch
-
1
)
{
memmove
(
font
->
chars
,
font
->
chars
+
loc
,
(
hic
-
loc
+
1
)
*
sizeof
(
DviFontChar
));
font
->
chars
=
xresize
(
font
->
chars
,
...
...
backend/dvi/mdvi-lib/tfmfile.c
View file @
d4139205
...
...
@@ -172,7 +172,8 @@ int tfm_load_file(const char *filename, TFMInfo *info)
/* We read the entire TFM file into core */
if
(
fstat
(
fileno
(
in
),
&
st
)
<
0
)
return
-
1
;
if
(
st
.
st_size
==
0
)
/* according to the spec, TFM files are smaller than 16K */
if
(
st
.
st_size
==
0
||
st
.
st_size
>=
16384
)
goto
bad_tfm
;
/* allocate a word-aligned buffer to hold the file */
...
...
backend/dvi/mdvi-lib/vf.c
View file @
d4139205
...
...
@@ -165,6 +165,12 @@ static int vf_load_font(DviParams *params, DviFont *font)
cc
=
fuget1
(
p
);
tfm
=
fuget3
(
p
);
}
if
(
cc
<
0
||
cc
>
65536
)
{
/* TeX engines do not support char codes bigger than 65535 */
mdvi_error
(
_
(
"(vf) %s: unexpected character %d
\n
"
),
font
->
fontname
,
cc
);
goto
error
;
}
if
(
loc
<
0
||
cc
<
loc
)
loc
=
cc
;
if
(
hic
<
0
||
cc
>
hic
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment