diff --git a/util/ddv_socket.cpp b/util/ddv_socket.cpp
index 56bfd210..610c1cc8 100644
--- a/util/ddv_socket.cpp
+++ b/util/ddv_socket.cpp
@@ -1,3 +1,4 @@
+#include <string>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/un.h>
@@ -11,12 +12,12 @@
 bool socketError = false;
 bool socketBlocking = false;
 
-int DDV_OpenUnix(const char adres[], bool nonblock = false){
+int DDV_OpenUnix(std::string adres, bool nonblock = false){
   int s = socket(AF_UNIX, SOCK_STREAM, 0);
-  struct sockaddr_un addr;
+  sockaddr_un addr;
   addr.sun_family = AF_UNIX;
-  strcpy(addr.sun_path, adres);
-  int r = connect(s, (sockaddr*)&addr, sizeof(struct sockaddr_un));
+  strncpy(addr.sun_path, adres.c_str(), adres.size()+1);
+  int r = connect(s, (sockaddr*)&addr, sizeof(addr));
   if (r == 0){
     if (nonblock){
       int flags = fcntl(s, F_GETFL, 0);