summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-01-24 19:13:57 +0100
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-01-24 19:13:57 +0100
commitd83b0472cb523da8be245cd1f7f12f29c8023faa (patch)
tree6cc72902eed4b7b8878c2c680a27276b06be849b /main.c
parent7a4027efa454259e64d308850a89c3f1d1496754 (diff)
proper sockaddr_un len calculation
Diffstat (limited to 'main.c')
-rw-r--r--main.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/main.c b/main.c
index b283f5a3..b979b011 100644
--- a/main.c
+++ b/main.c
@@ -19,6 +19,7 @@
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
+#include <stddef.h>
#include <time.h>
#ifdef __linux__
#include <sys/prctl.h>
@@ -249,7 +250,8 @@ server_start (void) {
// snprintf (srv_local.sun_path, sizeof (srv_local.sun_path), "%s/socket", dbconfdir);
// unlink(srv_local.sun_path);
memcpy (srv_local.sun_path, server_id, sizeof (server_id));
- int len = sizeof (srv_local);
+ //int len = sizeof (srv_local);
+ int len = offsetof(struct sockaddr_un, sun_path) + sizeof (server_id);
if (bind(srv_socket, (struct sockaddr *)&srv_local, len) < 0) {
perror ("bind");
return -1;
@@ -502,7 +504,8 @@ main (int argc, char *argv[]) {
memcpy (remote.sun_path, server_id, sizeof (server_id));
// snprintf (remote.sun_path, 108, "%s/socket", dbconfdir);
// len = strlen(remote.sun_path) + sizeof(remote.sun_family);
- len = sizeof (remote);
+ //len = sizeof (remote);
+ len = offsetof(struct sockaddr_un, sun_path) + sizeof (server_id);
if (connect(s, (struct sockaddr *)&remote, len) == 0) {
if (argc <= 1) {
cmdline[0] = 0;