Fix Savannah bug #43547.
* src/pcf/pcfread.c (pcf_read_TOC): Check `size' and `offset' values.
This commit is contained in:
parent
f49a100a6c
commit
0e2f5d518c
|
@ -1,3 +1,10 @@
|
||||||
|
2014-11-06 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
|
Fix Savannah bug #43547.
|
||||||
|
|
||||||
|
* src/pcf/pcfread.c (pcf_read_TOC): Check `size' and `offset'
|
||||||
|
values.
|
||||||
|
|
||||||
2014-11-06 Werner Lemberg <wl@gnu.org>
|
2014-11-06 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
* src/pcf/pcfread.c (pcf_read_TOC): Avoid memory leak.
|
* src/pcf/pcfread.c (pcf_read_TOC): Avoid memory leak.
|
||||||
|
|
|
@ -154,6 +154,21 @@ THE SOFTWARE.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* we now check whether the `size' and `offset' values are reasonable: */
|
||||||
|
/* `offset' + `size' must not exceed the stream size */
|
||||||
|
tables = face->toc.tables;
|
||||||
|
for ( n = 0; n < toc->count; n++ )
|
||||||
|
{
|
||||||
|
/* we need two checks to avoid overflow */
|
||||||
|
if ( ( tables->size > stream->size ) ||
|
||||||
|
( tables->offset > stream->size - tables->size ) )
|
||||||
|
{
|
||||||
|
error = FT_THROW( Invalid_Table );
|
||||||
|
goto Exit;
|
||||||
|
}
|
||||||
|
tables++;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue