r6958: Properly display quotes in SWAT. Thanks to Jay
authorDeryck Hodge <deryck@samba.org>
Tue, 24 May 2005 17:33:47 +0000 (17:33 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:56:58 +0000 (10:56 -0500)
Fenlason <fenlason@redhat.com> for spotting this issue.

deryck
(This used to be commit cd12641383c50020104142cad0e705e2b58c50f4)

source3/web/swat.c

index 1d6241fdd659dc30d2c53780e9a43528db4d0a8d..d7e4e722412426001f289f848816b62e710f257d 100644 (file)
@@ -77,6 +77,26 @@ static char *fix_backslash(const char *str)
        return newstring;
 }
 
+static char *fix_quotes(const char *str)
+{
+       static pstring newstring;
+       char *p = newstring;
+       size_t newstring_len = sizeof(newstring);
+       int quote_len = strlen("&quot;");
+
+       while (*str) {
+               if ( *str == '\"' && (newstring_len - PTR_DIFF(p, newstring) - 1) > quote_len ) {
+                       strncpy( p, "&quot;", quote_len); 
+                       p += 6;
+               } else {
+                       *p++ = *str;
+               }
+               ++str;
+       }
+       *p = '\0';
+       return newstring;
+}
+
 static char *stripspaceupper(const char *str)
 {
        static char newstring[1024];
@@ -249,7 +269,7 @@ static void show_parameter(int snum, struct parm_struct *parm)
        case P_USTRING:
                push_utf8_allocate(&utf8_s1, *(char **)ptr);
                printf("<input type=text size=40 name=\"parm_%s\" value=\"%s\">",
-                      make_parm_name(parm->label), utf8_s1);
+                      make_parm_name(parm->label), fix_quotes(utf8_s1));
                SAFE_FREE(utf8_s1);
                printf("<input type=button value=\"%s\" onClick=\"swatform.parm_%s.value=\'%s\'\">",
                        _("Set Default"), make_parm_name(parm->label),fix_backslash((char *)(parm->def.svalue)));
@@ -259,7 +279,7 @@ static void show_parameter(int snum, struct parm_struct *parm)
        case P_UGSTRING:
                push_utf8_allocate(&utf8_s1, (char *)ptr);
                printf("<input type=text size=40 name=\"parm_%s\" value=\"%s\">",
-                      make_parm_name(parm->label), utf8_s1);
+                      make_parm_name(parm->label), fix_quotes(utf8_s1));
                SAFE_FREE(utf8_s1);
                printf("<input type=button value=\"%s\" onClick=\"swatform.parm_%s.value=\'%s\'\">",
                        _("Set Default"), make_parm_name(parm->label),fix_backslash((char *)(parm->def.svalue)));