Explicit bounds checking on the bmp[] array.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 4 Aug 2004 16:27:28 +0000 (16:27 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 4 Aug 2004 16:27:28 +0000 (16:27 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/halibut@4400 cda61777-01e9-0310-a592-d414129be87e

bk_paper.c

index a8479c7..eb3caf0 100644 (file)
@@ -1318,7 +1318,9 @@ static int string_width(font_data *font, wchar_t const *string, int *errs)
     for (; *string; string++) {
        int index;
 
-       index = font->bmp[(unsigned short)*string];
+       index = (*string < 0 || *string > 0xFFFF ? 0xFFFF :
+                font->bmp[*string]);
+
        if (index == 0xFFFF) {
            if (errs)
                *errs = 1;
@@ -1766,7 +1768,8 @@ static int render_string(page_data *page, font_data *font, int fontsize,
     textpos = textwid = 0;
 
     while (*str) {
-       glyph = font->bmp[*str];
+       glyph = (*str < 0 || *str > 0xFFFF ? 0xFFFF :
+                font->bmp[*str]);
 
        if (glyph == 0xFFFF) {
            str++;