summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-06-30 16:29:40 +0200
committerMax Kellermann <max@duempel.org>2009-06-30 16:29:40 +0200
commit15d4c841ce8b5b387850d710999c623b038910fa (patch)
tree396305325b9415cae7512684f778e1f7933bbed8
parent5b9dfbe3539ba3d7d1d2962f1f888c4bd90755fa (diff)
database: fixed NULL pointer dereference after charset change
When the filesystem_charset is changed in mpd.conf, MPD should discard the old database. In this error branch, MPD did not fill the GError object properly, and logged a warning message instead, which caused a segmentation fault.
-rw-r--r--NEWS1
-rw-r--r--src/database.c9
2 files changed, 6 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index a4c377fa5..b0518128a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
ver 0.15.1 (2009/??/??)
* commands:
- don't resume playback when stopping during pause
+* database: fixed NULL pointer dereference after charset change
ver 0.15 (2009/06/23)
diff --git a/src/database.c b/src/database.c
index 7257930bc..5a06dda98 100644
--- a/src/database.c
+++ b/src/database.c
@@ -318,10 +318,11 @@ db_load(GError **error)
if (old_charset != NULL
&& strcmp(new_charset, old_charset)) {
fclose(fp);
- g_message("Existing database has charset \"%s\" "
- "instead of \"%s\"; "
- "discarding database file",
- new_charset, old_charset);
+ g_set_error(error, db_quark(), 0,
+ "Existing database has charset "
+ "\"%s\" instead of \"%s\"; "
+ "discarding database file",
+ new_charset, old_charset);
return false;
}
} else {