2
0
Fork 0

[utils] fix calculation for sockaddr_un struct size

personal/stbuehler/wip
Stefan Bühler 2011-05-02 12:30:39 +02:00
parent f277a22407
commit 4f377b792c
1 changed files with 3 additions and 1 deletions

View File

@ -623,7 +623,9 @@ liSocketAddress li_sockaddr_from_string(const GString *str, guint tcp_default_po
#ifdef HAVE_SYS_UN_H
if (0 == strncmp(str->str, "unix:/", 6)) {
saddr.len = str->len + 1 - 5 + sizeof(saddr.addr->un.sun_family);
/* try to support larger unix socket names than what fits in the default sockaddr_un struct */
saddr.len = str->len + 1 - 5 + sizeof(saddr.addr->un) - sizeof(saddr.addr->un.sun_path);
if (saddr.len < sizeof(saddr.addr->un)) saddr.len = sizeof(saddr.addr->un);
saddr.addr = (liSockAddr*) g_slice_alloc0(saddr.len);
saddr.addr->un.sun_family = AF_UNIX;
strcpy(saddr.addr->un.sun_path, str->str + 5);