gom: backport upstream patches-epoch1 Signed-off-by: Zhiqiang Liu <lzhq28@mail.ustc.edu.cn>
55 lines
1.6 KiB
Diff
55 lines
1.6 KiB
Diff
From 8e1777724a34aaa0f7361017a145e539318eedeb Mon Sep 17 00:00:00 2001
|
|
From: Bastien Nocera <hadess@hadess.net>
|
|
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)
|
|
|