Prevent index overflow due to tag_map in libwc
Bug-Chromium: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31936
This commit is contained in:
@@ -677,9 +677,9 @@ wc_ucs_put_tag(char *p)
|
|||||||
if (!strcasecmp(p, tag_map[i]))
|
if (!strcasecmp(p, tag_map[i]))
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
n_tag_map++;
|
if (n_tag_map + 1 >= MAX_TAG_MAP)
|
||||||
if (n_tag_map == MAX_TAG_MAP)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
n_tag_map++;
|
||||||
tag_map[n_tag_map] = p;
|
tag_map[n_tag_map] = p;
|
||||||
return n_tag_map;
|
return n_tag_map;
|
||||||
}
|
}
|
||||||
@@ -687,7 +687,7 @@ wc_ucs_put_tag(char *p)
|
|||||||
char *
|
char *
|
||||||
wc_ucs_get_tag(int ntag)
|
wc_ucs_get_tag(int ntag)
|
||||||
{
|
{
|
||||||
if (ntag == 0 || ntag > n_tag_map)
|
if (ntag <= 0 || ntag > n_tag_map)
|
||||||
return NULL;
|
return NULL;
|
||||||
return tag_map[ntag];
|
return tag_map[ntag];
|
||||||
}
|
}
|
||||||
|
@@ -25,8 +25,8 @@
|
|||||||
#define WC_C_UCS4_PLANE3 0x30000
|
#define WC_C_UCS4_PLANE3 0x30000
|
||||||
|
|
||||||
#define wc_ucs_tag_to_ucs(c) ((c) & WC_C_UNICODE_MASK)
|
#define wc_ucs_tag_to_ucs(c) ((c) & WC_C_UNICODE_MASK)
|
||||||
#define wc_ucs_tag_to_tag(c) ((c) >> 24)
|
#define wc_ucs_tag_to_tag(c) (((c) >> 24) & 0xff)
|
||||||
#define wc_ucs_to_ucs_tag(c,tag) ((c) | ((tag) << 24))
|
#define wc_ucs_to_ucs_tag(c,tag) ((c) | ((wc_uint32)((tag) & 0xff) << 24))
|
||||||
#define wc_ccs_ucs_to_ccs_ucs_tag(ccs) (WC_CCS_UCS_TAG | ((ccs) & ~WC_CCS_A_SET))
|
#define wc_ccs_ucs_to_ccs_ucs_tag(ccs) (WC_CCS_UCS_TAG | ((ccs) & ~WC_CCS_A_SET))
|
||||||
#define wc_ucs_to_utf16(ucs) \
|
#define wc_ucs_to_utf16(ucs) \
|
||||||
((((((ucs) - WC_C_UCS4_PLANE1) >> 10) | WC_C_UCS2_SURROGATE) << 16) \
|
((((((ucs) - WC_C_UCS4_PLANE1) >> 10) | WC_C_UCS2_SURROGATE) << 16) \
|
||||||
|
Reference in New Issue
Block a user