From 3cc4685abd608cb86ac3beca4501a77e00c6d5be Mon Sep 17 00:00:00 2001 From: André Fabian Silva Delgado Date: Thu, 21 May 2015 10:30:59 -0300 Subject: grilo-plugins-0.2.14-4.nonprism1: More metadata crasher (FS#44724 -> https://bugs.archlinux.org/task/44724) --- ...ata-Fixes-to-video_sanitise_string-non-al.patch | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 nonprism/grilo-plugins/0002-local-metadata-Fixes-to-video_sanitise_string-non-al.patch (limited to 'nonprism/grilo-plugins/0002-local-metadata-Fixes-to-video_sanitise_string-non-al.patch') diff --git a/nonprism/grilo-plugins/0002-local-metadata-Fixes-to-video_sanitise_string-non-al.patch b/nonprism/grilo-plugins/0002-local-metadata-Fixes-to-video_sanitise_string-non-al.patch new file mode 100644 index 000000000..dc7abbb52 --- /dev/null +++ b/nonprism/grilo-plugins/0002-local-metadata-Fixes-to-video_sanitise_string-non-al.patch @@ -0,0 +1,80 @@ +From a05b159c330a7a65479bba35bc529d0934640627 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Tue, 19 May 2015 20:53:28 +0200 +Subject: [PATCH 2/2] local-metadata: Fixes to video_sanitise_string non-alnum + handling + +- Extract loop condition into a helper function +- Use g_utf8_get_char to properly convert to unichar +- Be more defensive about g_utf8_find_prev_char returning NULL + +https://bugzilla.gnome.org/show_bug.cgi?id=748604 +--- + src/local-metadata/grl-local-metadata.c | 39 +++++++++++++++++++++++---------- + 1 file changed, 28 insertions(+), 11 deletions(-) + +diff --git a/src/local-metadata/grl-local-metadata.c b/src/local-metadata/grl-local-metadata.c +index 45856be..c7f731e 100644 +--- a/src/local-metadata/grl-local-metadata.c ++++ b/src/local-metadata/grl-local-metadata.c +@@ -242,6 +242,28 @@ grl_local_metadata_source_set_property (GObject *object, + + /* ======================= Utilities ==================== */ + ++static gboolean ++is_nonalnum (const gchar *str) ++{ ++ gunichar uchar; ++ ++ if (str == NULL) { ++ return FALSE; ++ } ++ ++ uchar = g_utf8_get_char (str); ++ ++ if (g_unichar_isalnum (uchar)) { ++ return FALSE; ++ } ++ ++ if (uchar == '!' || uchar == '?' || uchar == '.') { ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ + static gchar * + video_sanitise_string (const gchar *str) + { +@@ -270,22 +292,17 @@ video_sanitise_string (const gchar *str) + } + + if (*line_end != '\0') { +- line_end = g_utf8_find_prev_char (line, line_end); +- ++ /* After removing substring with blacklisted word, ignore non alpha-numeric ++ * char in the end of the sanitised string */ ++ do { ++ line_end = g_utf8_find_prev_char (line, line_end); ++ } while (is_nonalnum (line_end)); + + /* If everything in the string is blacklisted, just ignore + * the blackisting logic. + */ +- if (line_end == NULL) ++ if (line_end == NULL) { + return g_strdup (str); +- +- /* After removing substring with blacklisted word, ignore non alpha-numeric +- * char in the end of the sanitised string */ +- while (g_unichar_isalnum (*line_end) == FALSE && +- *line_end != '!' && +- *line_end != '?' && +- *line_end != '.') { +- line_end = g_utf8_find_prev_char (line, line_end); + } + + return g_strndup (line, line_end - line); +-- +2.4.0 + -- cgit v1.2.3-54-g00ecf