[gnome-terminal/gnome-3-12] app: Only allow valid charsets



commit 438e70b61e0d01a3952b960392b9f567e2de6c9b
Author: Christian Persch <chpe gnome org>
Date:   Tue May 20 16:04:15 2014 +0200

    app: Only allow valid charsets
    
    Charsets must be [-_A-Za-z0-9] only.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=730390
    (cherry picked from commit b0bdd4740f82daa6c2bb020738a857b8e8d2a6dd)
    
    Conflicts:
        src/terminal-app.c

 src/terminal-app.c |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)
---
diff --git a/src/terminal-app.c b/src/terminal-app.c
index b19a6ce..a416db9 100644
--- a/src/terminal-app.c
+++ b/src/terminal-app.c
@@ -632,6 +632,23 @@ terminal_app_get_encodings (TerminalApp *app)
   return app->encodings;
 }
 
+static const char *
+charset_validated (const char *charset)
+{
+  gsize i;
+
+  if (charset == NULL)
+    return "current"; 
+
+  for (i = 0; charset[i] != '\0'; i++) {
+    char c = charset[i];
+    if (!(g_ascii_isalnum(c) || c == '_' || c == '-'))
+      return "UTF-8";
+  }
+
+  return charset;
+}
+
 /**
  * terminal_app_ensure_encoding:
  * @app:
@@ -642,7 +659,7 @@ terminal_app_get_encodings (TerminalApp *app)
  * @charset is not a known charset, returns a #TerminalEncoding for a
  * custom charset.
  *
- * Returns: (transfer none): a #TerminalEncoding
+ * Returns: (transfer none): a #TerminalEncoding, or %NULL
  */
 TerminalEncoding *
 terminal_app_ensure_encoding (TerminalApp *app,
@@ -650,7 +667,11 @@ terminal_app_ensure_encoding (TerminalApp *app,
 {
   TerminalEncoding *encoding;
 
+<<<<<<< HEAD
   encoding = g_hash_table_lookup (app->encodings, charset ? charset : "current");
+=======
+  encoding = g_hash_table_lookup (app->encodings, charset_validated (charset));
+>>>>>>> b0bdd47... app: Only allow valid charsets
   if (encoding == NULL)
     {
       encoding = terminal_encoding_new (charset,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]