* src/type1/t1load.c (read_binary_data): Return more meaningful
value. (parse_encoding, parse_subrs, parse_charstrings, parse_dict): Check parser error value after call to T1_Skip_PS_Token (where necessary). * src/type1/t1parse.c (T1_Get_Private_Dict): Check parser error value after call to T1_Skip_PS_Token. * src/cid/cidparse.c (cid_parser_new): Check parser error value after call to cid_parser_skip_PS_token. * src/type42/t42parse.c (t42_parse_encoding, t42_parse_sfnts, t42_parse_charstrings, t42_parse_dict): Check parser error value after call to T1_Skip_PS_Token (where necessary). * src/psaux/psobjc.c (skip_string, ps_parser_skip_PS_token, ps_tobytes): Add error messages.
This commit is contained in:
parent
a33bd861d7
commit
1d565fb01b
20
ChangeLog
20
ChangeLog
@ -1,3 +1,23 @@
|
||||
2005-02-13 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* src/type1/t1load.c (read_binary_data): Return more meaningful
|
||||
value.
|
||||
(parse_encoding, parse_subrs, parse_charstrings, parse_dict): Check
|
||||
parser error value after call to T1_Skip_PS_Token (where necessary).
|
||||
|
||||
* src/type1/t1parse.c (T1_Get_Private_Dict): Check parser error
|
||||
value after call to T1_Skip_PS_Token.
|
||||
|
||||
* src/cid/cidparse.c (cid_parser_new): Check parser error value
|
||||
after call to cid_parser_skip_PS_token.
|
||||
|
||||
* src/type42/t42parse.c (t42_parse_encoding, t42_parse_sfnts,
|
||||
t42_parse_charstrings, t42_parse_dict): Check parser error value
|
||||
after call to T1_Skip_PS_Token (where necessary).
|
||||
|
||||
* src/psaux/psobjc.c (skip_string, ps_parser_skip_PS_token,
|
||||
ps_tobytes): Add error messages.
|
||||
|
||||
2005-02-12 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* configure: Output more variables to the created Makefile so that
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* CID-keyed Type1 parser (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -152,6 +152,9 @@
|
||||
|
||||
while ( cur < limit )
|
||||
{
|
||||
if ( parser->root.error )
|
||||
break;
|
||||
|
||||
if ( *cur == 'S' && ft_strncmp( (char*)cur, "StartData", 9 ) == 0 )
|
||||
{
|
||||
if ( ft_strncmp( (char*)arg1, "(Hex)", 5 ) == 0 )
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Auxiliary functions for PostScript fonts (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -429,7 +429,10 @@
|
||||
}
|
||||
|
||||
if ( cur < limit && *cur != '>' )
|
||||
{
|
||||
FT_ERROR(( "skip_string: missing closing delimiter `>'\n" ));
|
||||
parser->error = PSaux_Err_Invalid_File_Format;
|
||||
}
|
||||
else
|
||||
cur++;
|
||||
|
||||
@ -492,6 +495,8 @@
|
||||
cur++;
|
||||
if ( cur >= limit || *cur != '>' ) /* >> */
|
||||
{
|
||||
FT_ERROR(( "ps_parser_skip_PS_token: "
|
||||
"unexpected closing delimiter `>'\n" ));
|
||||
parser->error = PSaux_Err_Invalid_File_Format;
|
||||
goto Exit;
|
||||
}
|
||||
@ -516,6 +521,8 @@
|
||||
|
||||
if ( *cur == ')' )
|
||||
{
|
||||
FT_ERROR(( "ps_parser_skip_PS_token: "
|
||||
"unexpected closing delimiter `)'\n" ));
|
||||
parser->error = PSaux_Err_Invalid_File_Format;
|
||||
goto Exit;
|
||||
}
|
||||
@ -795,6 +802,7 @@
|
||||
{
|
||||
if ( *cur != '<' )
|
||||
{
|
||||
FT_ERROR(( "ps_tobytes: Missing starting delimiter `<'\n" ));
|
||||
error = PSaux_Err_Invalid_File_Format;
|
||||
goto Exit;
|
||||
}
|
||||
@ -834,6 +842,7 @@
|
||||
{
|
||||
if ( cur < limit && *cur != '>' )
|
||||
{
|
||||
FT_ERROR(( "ps_tobytes: Missing closing delimiter `>'\n" ));
|
||||
error = PSaux_Err_Invalid_File_Format;
|
||||
goto Exit;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Type 1 font loader (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -1008,7 +1008,7 @@
|
||||
*base = parser->root.cursor + 1;
|
||||
|
||||
parser->root.cursor += *size + 1;
|
||||
return 1;
|
||||
return !parser->root.error;
|
||||
}
|
||||
|
||||
FT_ERROR(( "read_binary_data: invalid size field\n" ));
|
||||
@ -1202,6 +1202,8 @@
|
||||
|
||||
parser->root.cursor = cur;
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
return;
|
||||
|
||||
len = parser->root.cursor - cur;
|
||||
|
||||
@ -1277,7 +1279,9 @@
|
||||
|
||||
/* position the parser right before the `dup' of the first subr */
|
||||
T1_Skip_PS_Token( parser ); /* `array' */
|
||||
T1_Skip_Spaces ( parser );
|
||||
if ( parser->root.error )
|
||||
return;
|
||||
T1_Skip_Spaces( parser );
|
||||
|
||||
/* initialize subrs array -- with synthetic fonts it is possible */
|
||||
/* we get here twice */
|
||||
@ -1315,6 +1319,8 @@
|
||||
/* `noaccess' & `put'. We position the parser right */
|
||||
/* before the next `dup', if any. */
|
||||
T1_Skip_PS_Token( parser ); /* `NP' or `|' or `noaccess' */
|
||||
if ( parser->root.error )
|
||||
return;
|
||||
T1_Skip_Spaces ( parser );
|
||||
|
||||
if ( ft_strncmp( (char*)parser->root.cursor, "put", 3 ) == 0 )
|
||||
@ -1451,6 +1457,8 @@
|
||||
}
|
||||
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
return;
|
||||
|
||||
if ( *cur == '/' )
|
||||
{
|
||||
@ -1723,7 +1731,9 @@
|
||||
break;
|
||||
|
||||
T1_Skip_PS_Token( parser );
|
||||
T1_Skip_Spaces ( parser );
|
||||
if ( parser->root.error )
|
||||
goto Exit;
|
||||
T1_Skip_Spaces( parser );
|
||||
cur = parser->root.cursor;
|
||||
}
|
||||
|
||||
@ -1759,6 +1769,8 @@
|
||||
{
|
||||
start_binary = cur;
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
goto Exit;
|
||||
have_integer = 1;
|
||||
}
|
||||
|
||||
@ -1801,6 +1813,8 @@
|
||||
|
||||
parser->root.cursor = cur;
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
goto Exit;
|
||||
|
||||
len = parser->root.cursor - cur;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Type 1 parser (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
@ -337,6 +337,8 @@
|
||||
goto Found;
|
||||
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
break;
|
||||
T1_Skip_Spaces ( parser );
|
||||
cur = parser->root.cursor;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
/* */
|
||||
/* Type 42 font parser (body). */
|
||||
/* */
|
||||
/* Copyright 2002, 2003, 2004 by Roberto Alameda. */
|
||||
/* Copyright 2002, 2003, 2004, 2005 by Roberto Alameda. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
@ -412,14 +412,16 @@
|
||||
|
||||
parser->root.cursor = cur;
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
return;
|
||||
|
||||
len = parser->root.cursor - cur;
|
||||
|
||||
parser->root.error = T1_Add_Table( char_table, charcode,
|
||||
cur, len + 1 );
|
||||
char_table->elements[charcode][len] = '\0';
|
||||
if ( parser->root.error )
|
||||
return;
|
||||
char_table->elements[charcode][len] = '\0';
|
||||
|
||||
n++;
|
||||
}
|
||||
@ -550,6 +552,8 @@
|
||||
string_size = T1_ToInt( parser );
|
||||
|
||||
T1_Skip_PS_Token( parser ); /* `RD' */
|
||||
if ( parser->root.error )
|
||||
return;
|
||||
|
||||
string_buf = parser->root.cursor + 1; /* one space after `RD' */
|
||||
|
||||
@ -691,6 +695,8 @@
|
||||
|
||||
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
return;
|
||||
T1_Skip_Spaces( parser );
|
||||
cur = parser->root.cursor;
|
||||
|
||||
@ -705,6 +711,8 @@
|
||||
break;
|
||||
}
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
return;
|
||||
T1_Skip_Spaces( parser );
|
||||
}
|
||||
}
|
||||
@ -767,6 +775,8 @@
|
||||
break;
|
||||
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
return;
|
||||
|
||||
if ( *cur == '/' )
|
||||
{
|
||||
@ -1003,6 +1013,8 @@
|
||||
break;
|
||||
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
goto Exit;
|
||||
T1_Skip_Spaces ( parser );
|
||||
cur = parser->root.cursor;
|
||||
}
|
||||
@ -1033,6 +1045,8 @@
|
||||
|
||||
parser->root.cursor = cur;
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
goto Exit;
|
||||
|
||||
len = parser->root.cursor - cur;
|
||||
|
||||
@ -1069,11 +1083,16 @@
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
T1_Skip_PS_Token( parser );
|
||||
if ( parser->root.error )
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
T1_Skip_Spaces( parser );
|
||||
}
|
||||
|
||||
Exit:
|
||||
return parser->root.error;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user