From 6ff8ffabef129fa823c9b38924ab39c71ea428be Mon Sep 17 00:00:00 2001 From: Felix Kratz Date: Thu, 11 Jan 2024 11:53:23 +0100 Subject: [PATCH] properly escape media info payload --- src/media.m | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/media.m b/src/media.m index b99a241..c9d6ac9 100644 --- a/src/media.m +++ b/src/media.m @@ -58,10 +58,14 @@ bool g_media_events = false; - (void) update { @autoreleasepool { if (self.app && self.artist && self.title && self.album) { + char* escaped_artist = escape_string((char*)self.artist); + char* escaped_title = escape_string((char*)self.title); + char* escaped_album = escape_string((char*)self.album); + uint32_t info_len = strlen(self.app) - + strlen(self.artist) - + strlen(self.title) - + strlen(self.album) + 256; + + strlen(escaped_artist) + + strlen(escaped_title) + + strlen(escaped_album) + 256; char info[info_len]; snprintf(info, info_len, "{\n" @@ -71,11 +75,15 @@ bool g_media_events = false; "\t\"artist\": \"%s\",\n" "\t\"app\": \"%s\"\n}", self.playing ? "playing" : "paused", - self.title, - self.album, - self.artist, + escaped_title, + escaped_album, + escaped_artist, self.app ); + free(escaped_artist); + free(escaped_title); + free(escaped_album); + if (self.artwork) { struct event cover_event = { self.artwork, COVER_CHANGED }; event_post(&cover_event);