summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/html.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/ext/standard/html.c b/ext/standard/html.c
index 5284e543f2..30539cdf6f 100644
--- a/ext/standard/html.c
+++ b/ext/standard/html.c
@@ -912,12 +912,10 @@ PHPAPI char *php_unescape_html_entities(unsigned char *old, int oldlen, int *new
if (entity_map[j].table[k - entity_map[j].basechar] == NULL)
continue;
- entity[0] = '&';
- entity_length = strlen(entity_map[j].table[k - entity_map[j].basechar]);
- strncpy(&entity[1], entity_map[j].table[k - entity_map[j].basechar], sizeof(entity) - 2);
- entity[entity_length+1] = ';';
- entity[entity_length+2] = '\0';
- entity_length += 2;
+ entity_length = snprintf(entity, sizeof(entity), "&%s;", entity_map[j].table[k - entity_map[j].basechar]);
+ if (entity_length >= sizeof(entity)) {
+ continue;
+ }
/* When we have MBCS entities in the tables above, this will need to handle it */
replacement_len = 0;