File tracker-miners-CVE-2026-1766.patch of Package tracker-miners

diff -urp tracker-miners-3.6.2.orig/src/tracker-extract/tracker-extract-mp3.c tracker-miners-3.6.2/src/tracker-extract/tracker-extract-mp3.c
--- tracker-miners-3.6.2.orig/src/tracker-extract/tracker-extract-mp3.c	2026-02-05 15:18:31.109799749 -0600
+++ tracker-miners-3.6.2/src/tracker-extract/tracker-extract-mp3.c	2026-02-05 15:18:52.366800661 -0600
@@ -1565,6 +1565,46 @@ extract_ufid_tags (id3v2tag *tag, const
 }
 
 static void
+extract_comm_tag (id3v2tag    *tag,
+                  const gchar *data,
+                  guint        pos,
+                  size_t       csize,
+                  id3tag      *info,
+                  gfloat       version)
+{
+	gchar *word = NULL;
+	gchar text_encode;
+	const gchar *text_desc;
+	const gchar *text;
+	guint offset;
+	gint text_desc_len;
+
+	text_encode =  data[pos + 0]; /* $xx */
+	text_desc = &data[pos + 4]; /* <text string according to encoding> $00 (00) */
+	text_desc_len = id3v2_strlen (text_encode, text_desc, csize - 4);
+
+	offset = 4 + text_desc_len + id3v2_nul_size (text_encode);
+
+	if (offset >= csize)
+		return;
+
+	text = &data[pos + offset]; /* <full text string according to encoding> */
+
+	if (version == 2.3f)
+		word = id3v2_text_to_utf8 (text_encode, text, csize - offset, info);
+	else
+		word = id3v24_text_to_utf8 (text_encode, text, csize - offset, info);
+
+	if (!tracker_is_empty_string (word)) {
+		g_strstrip (word);
+		g_free (tag->comment);
+		tag->comment = word;
+	} else {
+		g_free (word);
+	}
+}
+
+static void
 get_id3v24_tags (id3v24frame           frame,
                  const gchar          *data,
                  size_t                csize,
@@ -1603,35 +1643,9 @@ get_id3v24_tags (id3v24frame           f
 		break;
 	}
 
-	case ID3V24_COMM: {
-		gchar *word;
-		gchar text_encode;
-		const gchar *text_desc;
-		const gchar *text;
-		guint offset;
-		gint text_desc_len;
-
-		text_encode   =  data[pos + 0]; /* $xx */
-		text_desc     = &data[pos + 4]; /* <text string according to encoding> $00 (00) */
-		text_desc_len = id3v2_strlen (text_encode, text_desc, csize - 4);
-
-		offset        = 4 + text_desc_len + id3v2_nul_size (text_encode);
-		text          = &data[pos + offset]; /* <full text string according to encoding> */
-
-		if (offset >= csize)
-			break;
-
-		word = id3v24_text_to_utf8 (text_encode, text, csize - offset, info);
-
-		if (!tracker_is_empty_string (word)) {
-			g_strstrip (word);
-			g_free (tag->comment);
-			tag->comment = word;
-		} else {
-			g_free (word);
-		}
+	case ID3V24_COMM:
+		extract_comm_tag (tag, data, pos, csize, info, 2.4f);
 		break;
-	}
 
 	case ID3V24_TMCL: {
 		extract_performers_tags (tag, data, pos, csize, info, 2.4f);
@@ -1811,33 +1825,9 @@ get_id3v23_tags (id3v24frame           f
 		break;
 	}
 
-	case ID3V24_COMM: {
-		gchar *word;
-		gchar text_encode;
-		const gchar *text_desc;
-		const gchar *text;
-		guint offset;
-		gint text_desc_len;
-
-		text_encode   =  data[pos + 0]; /* $xx */
-		text_desc     = &data[pos + 4]; /* <text string according to encoding> $00 (00) */
-		text_desc_len = id3v2_strlen (text_encode, text_desc, csize - 4);
-
-		offset        = 4 + text_desc_len + id3v2_nul_size (text_encode);
-		text          = &data[pos + offset]; /* <full text string according to encoding> */
-
-		word = id3v2_text_to_utf8 (text_encode, text, csize - offset, info);
-
-		if (!tracker_is_empty_string (word)) {
-			g_strstrip (word);
-			g_free (tag->comment);
-			tag->comment = word;
-		} else {
-			g_free (word);
-		}
-
+	case ID3V24_COMM:
+		extract_comm_tag (tag, data, pos, csize, info, 2.4f);
 		break;
-	}
 
 	case ID3V24_IPLS: {
 		extract_performers_tags (tag, data, pos, csize, info, 2.3f);
openSUSE Build Service is sponsored by