winemenubuilder: escape XML special characters in MIME types
Damjan Jovanovic
damjan.jov at gmail.com
Thu Nov 12 13:42:19 CST 2009
Changelog:
* winemenubuilder: escape XML special characters in MIME types
Damjan Jovanovic
-------------- next part --------------
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c
index fb13878..7bcdd44 100644
--- a/programs/winemenubuilder/winemenubuilder.c
+++ b/programs/winemenubuilder/winemenubuilder.c
@@ -730,6 +730,26 @@ static char* heap_printf(const char *format, ...)
return ret;
}
+static void write_xml_text(FILE *file, const char *text)
+{
+ int i;
+ for (i = 0; text[i]; i++)
+ {
+ if (text[i] == '&')
+ fputs("&", file);
+ else if (text[i] == '<')
+ fputs("<", file);
+ else if (text[i] == '>')
+ fputs(">", file);
+ else if (text[i] == '\'')
+ fputs("'", file);
+ else if (text[i] == '"')
+ fputs(""", file);
+ else
+ fputc(text[i], file);
+ }
+}
+
static BOOL create_directories(char *directory)
{
BOOL ret = TRUE;
@@ -1805,10 +1825,18 @@ static BOOL write_freedesktop_mime_type_entry(const char *packages_dir, const ch
{
fprintf(packageFile, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
fprintf(packageFile, "<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">\n");
- fprintf(packageFile, " <mime-type type=\"%s\">\n", mime_type);
- fprintf(packageFile, " <glob pattern=\"*%s\"/>\n", dot_extension);
+ fprintf(packageFile, " <mime-type type=\"");
+ write_xml_text(packageFile, mime_type);
+ fprintf(packageFile, "\">\n");
+ fprintf(packageFile, " <glob pattern=\"*");
+ write_xml_text(packageFile, dot_extension);
+ fprintf(packageFile, "\"/>\n");
if (comment)
- fprintf(packageFile, " <comment>%s</comment>\n", comment);
+ {
+ fprintf(packageFile, " <comment>");
+ write_xml_text(packageFile, comment);
+ fprintf(packageFile, "</comment>\n");
+ }
fprintf(packageFile, " </mime-type>\n");
fprintf(packageFile, "</mime-info>\n");
ret = TRUE;
More information about the wine-patches
mailing list