]> gitweb.ps.run Git - ps-cgit/blobdiff - html.c
ui-snapshot: actually compress zip archives
[ps-cgit] / html.c
diff --git a/html.c b/html.c
index d7d9fd7007ff764c17ead46f23f00eaf44ade142..d86b2c16985053c3d539a7ee0d89bcd15d56375b 100644 (file)
--- a/html.c
+++ b/html.c
@@ -112,14 +112,16 @@ void html_attr(char *txt)
        char *t = txt;
        while(t && *t){
                int c = *t;
-               if (c=='<' || c=='>' || c=='\'') {
+               if (c=='<' || c=='>' || c=='\'' || c=='\"') {
                        write(htmlfd, txt, t - txt);
                        if (c=='>')
                                html("&gt;");
                        else if (c=='<')
                                html("&lt;");
                        else if (c=='\'')
-                               html("&quote;");
+                               html("&#x27;");
+                       else if (c=='"')
+                               html("&quot;");
                        txt = t+1;
                }
                t++;
@@ -238,19 +240,20 @@ int hextoint(char c)
 
 char *convert_query_hexchar(char *txt)
 {
-       int d1, d2;
-       if (strlen(txt) < 3) {
+       int d1, d2, n;
+       n = strlen(txt);
+       if (n < 3) {
                *txt = '\0';
                return txt-1;
        }
        d1 = hextoint(*(txt+1));
        d2 = hextoint(*(txt+2));
        if (d1<0 || d2<0) {
-               strcpy(txt, txt+3);
+               memmove(txt, txt+3, n-3);
                return txt-1;
        } else {
                *txt = d1 * 16 + d2;
-               strcpy(txt+1, txt+3);
+               memmove(txt+1, txt+3, n-2);
                return txt;
        }
 }