[Chromium] Uninitialized access in SimpleFontDataSkia::platformInit
authorbashi@chromium.org <bashi@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Mar 2012 02:42:05 +0000 (02:42 +0000)
committerbashi@chromium.org <bashi@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Mar 2012 02:42:05 +0000 (02:42 +0000)
https://bugs.webkit.org/show_bug.cgi?id=82411

Reviewed by Kent Tamura.

SimpleFontDataSkia::platformInit() could call widthForGlyph(), which
accesses m_zeroWidthSpaceGlyph. This causes a valgrind memcheck error
because m_zeroWidthSpaceGlyph isn't initialized at this point.
Initialize m_zeroWidthSpaceGlyph with zero so that widthForGlyph() can
return appropriate value(The value zero here means "unknown glyph").

No new tests. I manually confirmed this change fixes the valgrind
memcheck error.

* platform/graphics/skia/SimpleFontDataSkia.cpp:
(WebCore::SimpleFontData::platformInit):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@112357 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/skia/SimpleFontDataSkia.cpp

index e090791..eede911 100644 (file)
@@ -1,3 +1,22 @@
+2012-03-27  Kenichi Ishibashi  <bashi@chromium.org>
+
+        [Chromium] Uninitialized access in SimpleFontDataSkia::platformInit
+        https://bugs.webkit.org/show_bug.cgi?id=82411
+
+        Reviewed by Kent Tamura.
+
+        SimpleFontDataSkia::platformInit() could call widthForGlyph(), which
+        accesses m_zeroWidthSpaceGlyph. This causes a valgrind memcheck error
+        because m_zeroWidthSpaceGlyph isn't initialized at this point.
+        Initialize m_zeroWidthSpaceGlyph with zero so that widthForGlyph() can
+        return appropriate value(The value zero here means "unknown glyph").
+
+        No new tests. I manually confirmed this change fixes the valgrind
+        memcheck error.
+
+        * platform/graphics/skia/SimpleFontDataSkia.cpp:
+        (WebCore::SimpleFontData::platformInit):
+
 2012-03-27  YoungTaeck Song  <youngtaeck.song@samsung.com>
 
         [EFL][WK2] Add RunLoopEfl and WorkQueueEfl
index 782b02f..65a468e 100644 (file)
@@ -139,8 +139,14 @@ void SimpleFontData::platformInit()
             static const UChar32 xChar = 'x';
             const Glyph xGlyph = glyphPageZero->glyphDataForCharacter(xChar).glyph;
 
-            if (xGlyph)
+            if (xGlyph) {
+                // In widthForGlyph(), xGlyph will be compared with
+                // m_zeroWidthSpaceGlyph, which isn't initialized yet here.
+                // Initialize it with zero to make sure widthForGlyph() returns
+                // the right width.
+                m_zeroWidthSpaceGlyph = 0;
                 m_avgCharWidth = widthForGlyph(xGlyph);
+            }
         }
     }
 }