gom/0003-gom-Verify-whether-a-table-name-is-valid-before-sett.patch
Zhiqiang Liu f5f96f6fe1 gom: backport upstream patches-epoch1
gom: backport upstream patches-epoch1

Signed-off-by: Zhiqiang Liu <lzhq28@mail.ustc.edu.cn>
2020-07-27 16:58:26 +08:00

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)