[gom] gom: Verify whether a table name is valid before setting it



commit 8e1777724a34aaa0f7361017a145e539318eedeb
Author: Bastien Nocera <hadess hadess net>
Date:   Wed Aug 9 12:52:08 2017 +0200

    gom: Verify whether a table name is valid before setting it
    
    https://bugzilla.gnome.org/show_bug.cgi?id=785983

 gom/gom-resource.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)
---
diff --git a/gom/gom-resource.c b/gom/gom-resource.c
index 25d934e..2d2b495 100644
--- a/gom/gom-resource.c
+++ b/gom/gom-resource.c
@@ -26,6 +26,7 @@
 #include "gom-repository.h"
 #include "gom-resource.h"
 #include "gom-resource-priv.h"
+#include "reserved-keywords.h"
 
 G_DEFINE_ABSTRACT_TYPE(GomResource, gom_resource, G_TYPE_OBJECT)
 
@@ -200,6 +201,19 @@ gom_resource_class_set_reference (GomResourceClass     *resource_class,
                                g_strdup(ref_property_name), g_free);
 }
 
+static gboolean
+is_valid_table_name (const gchar *table)
+{
+   guint i;
+
+   for (i = 0; i < G_N_ELEMENTS (reserved_keywords); i++) {
+      if (g_ascii_strcasecmp (reserved_keywords[i], table) == 0)
+         return FALSE;
+   }
+
+   return TRUE;
+}
+
 void
 gom_resource_class_set_table (GomResourceClass *resource_class,
                               const gchar      *table)
@@ -207,6 +221,7 @@ gom_resource_class_set_table (GomResourceClass *resource_class,
    g_return_if_fail(GOM_IS_RESOURCE_CLASS(resource_class));
    g_return_if_fail(table != NULL);
    g_return_if_fail(strlen(table) <= sizeof(resource_class->table));
+   g_return_if_fail(is_valid_table_name(table));
 
    g_snprintf(resource_class->table,
               sizeof(resource_class->table),


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