diff --git a/NEWS b/NEWS
index dae99f74a..ccb0f3905 100644
--- a/NEWS
+++ b/NEWS
@@ -2,7 +2,10 @@ ver 0.19.4 (not yet released)
 * protocol
   - workaround for buggy clients that send "add /"
 * decoder
+  - ffmpeg: support opus
   - opus: add MIME types audio/ogg and application/ogg
+* fix crash on failed filename charset conversion
+* fix local socket detection from uid=0 (root)
 
 ver 0.19.3 (2014/11/11)
 * protocol
@@ -126,6 +129,12 @@ ver 0.19 (2014/10/10)
 * install systemd unit for socket activation
 * Android port
 
+ver 0.18.18 (2014/11/18)
+* decoder
+  - ffmpeg: support opus
+* fix crash on failed filename charset conversion
+* fix local socket detection from uid=0 (root)
+
 ver 0.18.17 (2014/11/02)
 * playlist
   - don't allow empty playlist name
diff --git a/src/client/Client.hxx b/src/client/Client.hxx
index 849a11ed4..c0a940ded 100644
--- a/src/client/Client.hxx
+++ b/src/client/Client.hxx
@@ -127,7 +127,7 @@ public:
 	 * a local (UNIX domain) socket?
 	 */
 	bool IsLocal() const {
-		return uid > 0;
+		return uid >= 0;
 	}
 
 	unsigned GetPermission() const {
diff --git a/src/client/ClientFile.cxx b/src/client/ClientFile.cxx
index eba64d09c..3ea8034d2 100644
--- a/src/client/ClientFile.cxx
+++ b/src/client/ClientFile.cxx
@@ -41,7 +41,7 @@ Client::AllowFile(Path path_fs, Error &error) const
 		   instance */
 		return true;
 
-	if (uid <= 0) {
+	if (uid < 0) {
 		/* unauthenticated client */
 		error.Set(ack_domain, ACK_ERROR_PERMISSION, "Access denied");
 		return false;
diff --git a/src/event/ServerSocket.cxx b/src/event/ServerSocket.cxx
index ce70a969b..313f0a6cf 100644
--- a/src/event/ServerSocket.cxx
+++ b/src/event/ServerSocket.cxx
@@ -130,7 +130,7 @@ get_remote_uid(int fd)
 	socklen_t len = sizeof (cred);
 
 	if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) < 0)
-		return 0;
+		return -1;
 
 	return cred.uid;
 #else
diff --git a/src/fs/AllocatedPath.cxx b/src/fs/AllocatedPath.cxx
index 30ce7e3a9..ceaad73ea 100644
--- a/src/fs/AllocatedPath.cxx
+++ b/src/fs/AllocatedPath.cxx
@@ -46,7 +46,11 @@ AllocatedPath
 AllocatedPath::FromUTF8(const char *path_utf8)
 {
 #ifdef HAVE_GLIB
-	return AllocatedPath(Donate(), ::PathFromUTF8(path_utf8));
+	char *path = ::PathFromUTF8(path_utf8);
+	if (path == nullptr)
+		return AllocatedPath::Null();
+
+	return AllocatedPath(Donate(), path);
 #else
 	return FromFS(path_utf8);
 #endif