[raster] Fix uninitialized memory access.
Apparently `ras.cProfile' might be uninitialized. This will be the case if `ras.top == ras.cProfile->offset', as can be seen in `End_Profile'. The overshoot code introduced in a change `Fix B/W rasterization of subglyphs with different drop-out modes.' (from 2009-06-18) violated this, accessing `ras.cProfile->flags' unconditionally just before calling `End_Profile' (which then detected that `cProfile' is uninitialized and didn't touch it). This was harmless, and was not detected by valgrind before because the objects were allocated on the `raster_pool', which was always initialized. With recent change to allocate raster buffers on the stack, valgrind now reported this invalid access. * src/raster/ftraster.c (Convert_Glyph): Don't access an uninitialized `cProfile'.
This commit is contained in:
parent
b2ba68665f
commit
c242fe41ec
20
ChangeLog
20
ChangeLog
|
@ -1,3 +1,23 @@
|
||||||
|
2015-01-14 Behdad Esfahbod <behdad@behdad.org>
|
||||||
|
|
||||||
|
[raster] Fix uninitialized memory access.
|
||||||
|
|
||||||
|
Apparently `ras.cProfile' might be uninitialized. This will be the
|
||||||
|
case if `ras.top == ras.cProfile->offset', as can be seen in
|
||||||
|
`End_Profile'. The overshoot code introduced in a change `Fix B/W
|
||||||
|
rasterization of subglyphs with different drop-out modes.' (from
|
||||||
|
2009-06-18) violated this, accessing `ras.cProfile->flags'
|
||||||
|
unconditionally just before calling `End_Profile' (which then
|
||||||
|
detected that `cProfile' is uninitialized and didn't touch it).
|
||||||
|
|
||||||
|
This was harmless, and was not detected by valgrind before because
|
||||||
|
the objects were allocated on the `raster_pool', which was always
|
||||||
|
initialized. With recent change to allocate raster buffers on the
|
||||||
|
stack, valgrind now reported this invalid access.
|
||||||
|
|
||||||
|
* src/raster/ftraster.c (Convert_Glyph): Don't access an
|
||||||
|
uninitialized `cProfile'.
|
||||||
|
|
||||||
2015-01-14 Behdad Esfahbod <behdad@behdad.org>
|
2015-01-14 Behdad Esfahbod <behdad@behdad.org>
|
||||||
|
|
||||||
[smooth] Fix uninitialized memory access.
|
[smooth] Fix uninitialized memory access.
|
||||||
|
|
|
@ -1982,7 +1982,8 @@
|
||||||
/* to be drawn. */
|
/* to be drawn. */
|
||||||
|
|
||||||
lastProfile = ras.cProfile;
|
lastProfile = ras.cProfile;
|
||||||
if ( ras.cProfile->flags & Flow_Up )
|
if ( ras.top != ras.cProfile->offset &&
|
||||||
|
( ras.cProfile->flags & Flow_Up ) )
|
||||||
o = IS_TOP_OVERSHOOT( ras.lastY );
|
o = IS_TOP_OVERSHOOT( ras.lastY );
|
||||||
else
|
else
|
||||||
o = IS_BOTTOM_OVERSHOOT( ras.lastY );
|
o = IS_BOTTOM_OVERSHOOT( ras.lastY );
|
||||||
|
|
Loading…
Reference in New Issue