|
|
|
@ -750,7 +750,7 @@ int buffer_append_string_url_encoded(buffer *b, const char *s, size_t s_len) {
|
|
|
|
|
|
|
|
|
|
int buffer_append_string_html_encoded(buffer *b, const char *s, size_t s_len) {
|
|
|
|
|
unsigned char *ds, *d;
|
|
|
|
|
size_t d_len;
|
|
|
|
|
size_t d_len, i;
|
|
|
|
|
|
|
|
|
|
if (!s || !b) return -1;
|
|
|
|
|
|
|
|
|
@ -762,17 +762,21 @@ int buffer_append_string_html_encoded(buffer *b, const char *s, size_t s_len) {
|
|
|
|
|
if (s_len == 0) return 0;
|
|
|
|
|
|
|
|
|
|
/* count to-be-encoded-characters */
|
|
|
|
|
for (ds = (unsigned char *)s, d_len = 0; *ds; ds++) {
|
|
|
|
|
for (ds = (unsigned char *)s, d_len = 0, i = 0; i < s_len && *ds; ds++, i++) {
|
|
|
|
|
d_len++;
|
|
|
|
|
if (*ds == '<' || *ds == '>')
|
|
|
|
|
if (*ds == '<' || *ds == '>') {
|
|
|
|
|
d_len += 4 - 1;
|
|
|
|
|
else if (*ds == '&')
|
|
|
|
|
} else if (*ds == '&') {
|
|
|
|
|
d_len += 5 - 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
buffer_prepare_append(b, d_len);
|
|
|
|
|
|
|
|
|
|
for (ds = (unsigned char *)s, d = (unsigned char *)b->ptr + b->used - 1, d_len = 0; *ds; ds++) {
|
|
|
|
|
for (ds = (unsigned char *)s,
|
|
|
|
|
d = (unsigned char *)b->ptr + b->used - 1,
|
|
|
|
|
d_len = 0,
|
|
|
|
|
i = 0; i < s_len && *ds; ds++, i++) {
|
|
|
|
|
switch (*ds) {
|
|
|
|
|
case '>':
|
|
|
|
|
d[d_len++] = '&';
|
|
|
|
|