diff options
author | Florian Pritz <bluewind@xinu.at> | 2018-03-22 11:32:53 +0100 |
---|---|---|
committer | Florian Pritz <bluewind@xinu.at> | 2018-03-22 11:32:53 +0100 |
commit | 343a8b8ee33f9a181e662fc0e3a3979dd9b52dd4 (patch) | |
tree | 2be5d6faa22089f8d1b0c1d7e14f283550130370 /html.c | |
parent | e4803632f41cc3f09af6a88511b1d6359be3d325 (diff) | |
parent | 33414d7869aa55aaccd45cdb82268d454cb79863 (diff) | |
download | cgit-343a8b8ee33f9a181e662fc0e3a3979dd9b52dd4.tar.gz cgit-343a8b8ee33f9a181e662fc0e3a3979dd9b52dd4.tar.xz |
Merge branch 'master' of https://git.zx2c4.com/cgit into local
Diffstat (limited to 'html.c')
-rw-r--r-- | html.c | 32 |
1 files changed, 11 insertions, 21 deletions
@@ -124,29 +124,20 @@ void html_vtxtf(const char *format, va_list ap) void html_txt(const char *txt) { - const char *t = txt; - while (t && *t) { - int c = *t; - if (c == '<' || c == '>' || c == '&') { - html_raw(txt, t - txt); - if (c == '>') - html(">"); - else if (c == '<') - html("<"); - else if (c == '&') - html("&"); - txt = t + 1; - } - t++; - } - if (t != txt) - html(txt); + if (txt) + html_ntxt(txt, strlen(txt)); } -void html_ntxt(int len, const char *txt) +ssize_t html_ntxt(const char *txt, size_t len) { const char *t = txt; - while (t && *t && len--) { + ssize_t slen; + + if (len > SSIZE_MAX) + return -1; + + slen = (ssize_t) len; + while (t && *t && slen--) { int c = *t; if (c == '<' || c == '>' || c == '&') { html_raw(txt, t - txt); @@ -162,8 +153,7 @@ void html_ntxt(int len, const char *txt) } if (t != txt) html_raw(txt, t - txt); - if (len < 0) - html("..."); + return slen; } void html_attrf(const char *fmt, ...) |