summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2003-04-15 20:00:04 +0000
committerOwen Taylor <otaylor@src.gnome.org>2003-04-15 20:00:04 +0000
commit7c199eb857f8fa30e92904d18f862e19ee13ad17 (patch)
treeafb421983ba12990275f38c53dc07a8e7c2a014a /modules
parent54e2efd5775278a6d40b6d8ba7c5f50118e9012f (diff)
downloadpango-7c199eb857f8fa30e92904d18f862e19ee13ad17.tar.gz
Fix out-of-bounds read where the value wasn't actually used. (#106744,
Tue Apr 15 03:54:01 2003 Owen Taylor <otaylor@redhat.com> * modules/hangul/hangul-{x,fc}.c: Fix out-of-bounds read where the value wasn't actually used. (#106744, Morten Welinder)
Diffstat (limited to 'modules')
-rw-r--r--modules/hangul/hangul-fc.c28
-rw-r--r--modules/hangul/hangul-x.c26
2 files changed, 29 insertions, 25 deletions
diff --git a/modules/hangul/hangul-fc.c b/modules/hangul/hangul-fc.c
index 7300f897..0008ba08 100644
--- a/modules/hangul/hangul-fc.c
+++ b/modules/hangul/hangul-fc.c
@@ -303,26 +303,28 @@ hangul_engine_shape (PangoFont *font,
for (i = 0; i < n_chars; i++)
{
- gunichar prev = jamos[n_jamos - 1];
gunichar wc;
wc = g_utf8_get_char (p);
/* Check syllable boundaries. */
- if (n_jamos &&
- ((!IS_L (prev) && IS_S (wc)) ||
- (IS_T (prev) && IS_L (wc)) ||
- (IS_V (prev) && IS_L (wc)) ||
- (IS_T (prev) && IS_V (wc)) ||
- IS_M(prev)))
+ if (n_jamos)
{
- /* Draw a syllable. */
- render_syllable (font, jamos, n_jamos, glyphs,
- &n_glyphs, start - text);
- n_jamos = 0;
- start = p;
+ gunichar prev = jamos[n_jamos - 1];
+ if ((!IS_L (prev) && IS_S (wc)) ||
+ (IS_T (prev) && IS_L (wc)) ||
+ (IS_V (prev) && IS_L (wc)) ||
+ (IS_T (prev) && IS_V (wc)) ||
+ IS_M(prev))
+ {
+ /* Draw a syllable. */
+ render_syllable (font, jamos, n_jamos, glyphs,
+ &n_glyphs, start - text);
+ n_jamos = 0;
+ start = p;
+ }
}
-
+
if (n_jamos == max_jamos)
{
max_jamos += 3; /* at most 3 for each syllable code (L+V+T) */
diff --git a/modules/hangul/hangul-x.c b/modules/hangul/hangul-x.c
index 3ec4aa7e..72bbc655 100644
--- a/modules/hangul/hangul-x.c
+++ b/modules/hangul/hangul-x.c
@@ -739,24 +739,26 @@ hangul_engine_shape (PangoFont *font,
for (i = 0; i < n_chars; i++)
{
- gunichar prev = jamos[n_jamos - 1];
gunichar wc;
wc = g_utf8_get_char (p);
/* Check syllable boundaries. */
- if (n_jamos &&
- ((!IS_L (prev) && IS_S (wc)) ||
- (IS_T (prev) && IS_L (wc)) ||
- (IS_V (prev) && IS_L (wc)) ||
- (IS_T (prev) && IS_V (wc))))
+ if (n_jamos)
{
- /* Draw a syllable. */
-
- (*render_func) (font, subfont, jamos, n_jamos,
- glyphs, &n_glyphs, start - text);
- n_jamos = 0;
- start = p;
+ gunichar prev = jamos[n_jamos - 1];
+ if ((!IS_L (prev) && IS_S (wc)) ||
+ (IS_T (prev) && IS_L (wc)) ||
+ (IS_V (prev) && IS_L (wc)) ||
+ (IS_T (prev) && IS_V (wc)))
+ {
+ /* Draw a syllable. */
+
+ (*render_func) (font, subfont, jamos, n_jamos,
+ glyphs, &n_glyphs, start - text);
+ n_jamos = 0;
+ start = p;
+ }
}
if (n_jamos == max_jamos)