[Xfce4-commits] <xfce4-mpc-plugin:master> Try to be more robust to rogue data in parse_playlistinfo_answer()/parse_outputs_answer()
Landry Breuil
noreply at xfce.org
Sat Oct 16 12:38:02 CEST 2010
Updating branch refs/heads/master
to a562cabe0cabec9ea478db8ad9c3579afe2146fc (commit)
from d2f05a30067b53c3155e1af6efd25a12f4ae1dc5 (commit)
commit a562cabe0cabec9ea478db8ad9c3579afe2146fc
Author: Landry Breuil <landry at xfce.org>
Date: Sat Oct 16 12:14:55 2010 +0200
Try to be more robust to rogue data in parse_playlistinfo_answer()/parse_outputs_answer()
while looping on the parsing of an output or a song, check if we
get an ok (which should not happen in normal case). If so, gracefully
exit the parsing.
only increment song/output counter if the parsing was ok.
panel-plugin/simple-libmpd.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/panel-plugin/simple-libmpd.c b/panel-plugin/simple-libmpd.c
index d035957..63e1689 100644
--- a/panel-plugin/simple-libmpd.c
+++ b/panel-plugin/simple-libmpd.c
@@ -414,7 +414,7 @@ void parse_playlistinfo_answer(MpdObj *mo, void *param)
ms->id = ms->pos = -1;
DBG("Going to parse song #%d", md->nb);
- while(lines[i] && ms->id < 0)
+ while(lines[i] && strcmp(lines[i],"OK") && ms->id < 0)
{
tokens = g_strsplit(lines[i], ":", 2);
/* remove leading whitespace */
@@ -430,7 +430,8 @@ void parse_playlistinfo_answer(MpdObj *mo, void *param)
i++;
g_strfreev(tokens);
}
- md->nb++;
+ if (lines[i] && strcmp(lines[i],"OK"))
+ md->nb++;
}
g_strfreev(lines);
DBG("Got 'OK', md->nb = %d", md->nb);
@@ -447,7 +448,7 @@ void parse_outputs_answer(MpdObj *mo, void *param)
md->alloutputs[md->nb] = g_new(mpd_Output, 1);
md->alloutputs[md->nb]->enabled = -1;
DBG("Going to parse output #%d", md->nb);
- while(lines[i] && md->alloutputs[md->nb]->enabled < 0)
+ while(lines[i] && strcmp(lines[i],"OK") && md->alloutputs[md->nb]->enabled < 0)
{
tokens = g_strsplit(lines[i], ":", 2);
/* remove leading whitespace */
@@ -459,7 +460,8 @@ void parse_outputs_answer(MpdObj *mo, void *param)
i++;
g_strfreev(tokens);
}
- md->nb++;
+ if (lines[i] && strcmp(lines[i],"OK"))
+ md->nb++;
}
g_strfreev(lines);
}
More information about the Xfce4-commits
mailing list