summaryrefslogtreecommitdiff
path: root/playlist.c
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2011-02-24 21:53:58 +0100
committerGravatar waker <wakeroid@gmail.com>2011-02-24 21:53:58 +0100
commit3773887f6657cb5d094e04d270103d5c84922dc8 (patch)
tree335030dc96a083faa845db61ca9f808cff000b5a /playlist.c
parentf4b6e6a0aa2894025b6fe87a282a9988a1a9e341 (diff)
fixed loading empty meta fields from playlist files
Diffstat (limited to 'playlist.c')
-rw-r--r--playlist.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/playlist.c b/playlist.c
index b17b7cff..eae3663f 100644
--- a/playlist.c
+++ b/playlist.c
@@ -2383,15 +2383,13 @@ pl_load (const char *fname) {
goto load_fail;
}
for (int i = 0; i < nm; i++) {
- char key[1024];
- char value[1024];
-
if (fread (&l, 1, 2, fp) != 2) {
goto load_fail;
}
- if (!l || l >= 1024) {
+ if (l < 0 || l >= 20000) {
goto load_fail;
}
+ char key[l+1];
if (fread (key, 1, l, fp) != l) {
goto load_fail;
}
@@ -2399,12 +2397,15 @@ pl_load (const char *fname) {
if (fread (&l, 1, 2, fp) != 2) {
goto load_fail;
}
- if (!l || l >= 1024) {
+ if (l<0 || l >= 20000) {
// skip
fseek (fp, l, SEEK_CUR);
}
else {
- if (fread (value, 1, l, fp) != l) {
+ char value[l+1];
+ int res = fread (value, 1, l, fp);
+ if (res != l) {
+ trace ("read error: requested %d, got %d\n", l, res);
goto load_fail;
}
value[l] = 0;