chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] udevd - fix socket path length
[elogind.git]
/
udevd.c
diff --git
a/udevd.c
b/udevd.c
index 24cf9c9a7cf8c5a491c63483fff09f4a91455b70..10d67f2c359995c861ecb94a554d855b14852b00 100644
(file)
--- a/
udevd.c
+++ b/
udevd.c
@@
-360,6
+360,7
@@
int main(int argc, char *argv[])
int csock;
struct sockaddr_un saddr;
struct sockaddr_un caddr;
int csock;
struct sockaddr_un saddr;
struct sockaddr_un caddr;
+ socklen_t addrlen;
socklen_t clen;
pthread_t cli_tid;
pthread_t mgr_msg_tid;
socklen_t clen;
pthread_t cli_tid;
pthread_t mgr_msg_tid;
@@
-379,6
+380,7
@@
int main(int argc, char *argv[])
saddr.sun_family = AF_LOCAL;
/* use abstract namespace for socket path */
strcpy(&saddr.sun_path[1], UDEVD_SOCK_PATH);
saddr.sun_family = AF_LOCAL;
/* use abstract namespace for socket path */
strcpy(&saddr.sun_path[1], UDEVD_SOCK_PATH);
+ addrlen = offsetof(struct sockaddr_un, sun_path) + strlen(saddr.sun_path+1) + 1;
ssock = socket(AF_LOCAL, SOCK_STREAM, 0);
if (ssock == -1) {
ssock = socket(AF_LOCAL, SOCK_STREAM, 0);
if (ssock == -1) {
@@
-386,7
+388,7
@@
int main(int argc, char *argv[])
exit(1);
}
exit(1);
}
- retval = bind(ssock, &saddr,
sizeof(saddr)
);
+ retval = bind(ssock, &saddr,
addrlen
);
if (retval < 0) {
dbg("bind failed\n");
goto exit;
if (retval < 0) {
dbg("bind failed\n");
goto exit;