From 8e1777724a34aaa0f7361017a145e539318eedeb Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Wed, 9 Aug 2017 12:52:08 +0200 Subject: [PATCH 03/29] 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 file changed, 15 insertions(+) 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), -- 2.21.1 (Apple Git-122.3)