summaryrefslogtreecommitdiff
path: root/plugins/artwork/lastfm.c
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-05-22 12:12:19 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-05-22 12:12:19 +0200
commitcacfeb0d9749074f6fd58fb58db3e8dcf7a2a139 (patch)
tree5a6e9f8c4fb6bbd9a7a28d6cd0f846bfafbd6b8a /plugins/artwork/lastfm.c
parentc2ec43487c376f5e44db0b7513675c8788869f95 (diff)
coverart: prevent attempts to load partial files
Diffstat (limited to 'plugins/artwork/lastfm.c')
-rw-r--r--plugins/artwork/lastfm.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/plugins/artwork/lastfm.c b/plugins/artwork/lastfm.c
index 2aed6d7c..bf76ccca 100644
--- a/plugins/artwork/lastfm.c
+++ b/plugins/artwork/lastfm.c
@@ -64,9 +64,11 @@ fetch_from_lastfm (const char *artist, const char *album, const char *dest)
}
current_file = fp;
- FILE *out = fopen (dest, "w+b");
+ char temp[PATH_MAX];
+ snprintf (temp, sizeof (temp), "%s.part", dest);
+ FILE *out = fopen (temp, "w+b");
if (!out) {
- trace ("fetch_from_lastfm: failed to open %s for writing\n", dest);
+ trace ("fetch_from_lastfm: failed to open %s for writing\n", temp);
deadbeef->fclose (fp);
current_file = NULL;
return -1;
@@ -88,8 +90,15 @@ fetch_from_lastfm (const char *artist, const char *album, const char *dest)
deadbeef->fclose (fp);
if (error) {
+ unlink (temp);
+ return -1;
+ }
+
+ if (rename (temp, dest) != 0) {
+ unlink (temp);
unlink (dest);
return -1;
}
+
return 0;
}