diff options
author | Owen Taylor <otaylor@redhat.com> | 2003-04-15 20:00:04 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2003-04-15 20:00:04 +0000 |
commit | 7c199eb857f8fa30e92904d18f862e19ee13ad17 (patch) | |
tree | afb421983ba12990275f38c53dc07a8e7c2a014a /modules | |
parent | 54e2efd5775278a6d40b6d8ba7c5f50118e9012f (diff) | |
download | pango-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.c | 28 | ||||
-rw-r--r-- | modules/hangul/hangul-x.c | 26 |
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) |