add some error checking, but fix the call to bind which really should have a +1 in it.
This commit is contained in:
parent
629f141734
commit
0dc2987b84
|
@ -291,7 +291,11 @@ void StreamBase::openComms()
|
||||||
if ( connkey > 0 )
|
if ( connkey > 0 )
|
||||||
{
|
{
|
||||||
|
|
||||||
snprintf( sock_path_lock, sizeof(sock_path_lock), "%s/zms-%06d.lock", config.path_socks, connkey);
|
unsigned int length = snprintf( sock_path_lock, sizeof(sock_path_lock), "%s/zms-%06d.lock", config.path_socks, connkey);
|
||||||
|
if ( length >= sizeof(sock_path_lock) ) {
|
||||||
|
Warning("Socket lock path was truncated.");
|
||||||
|
length = sizeof(sock_path_lock)-1;
|
||||||
|
}
|
||||||
|
|
||||||
lock_fd = open(sock_path_lock, O_CREAT|O_WRONLY, S_IRUSR | S_IWUSR);
|
lock_fd = open(sock_path_lock, O_CREAT|O_WRONLY, S_IRUSR | S_IWUSR);
|
||||||
if ( lock_fd <= 0 )
|
if ( lock_fd <= 0 )
|
||||||
|
@ -318,12 +322,19 @@ void StreamBase::openComms()
|
||||||
Fatal( "Can't create socket: %s", strerror(errno) );
|
Fatal( "Can't create socket: %s", strerror(errno) );
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf( loc_sock_path, sizeof(loc_sock_path), "%s/zms-%06ds.sock", config.path_socks, connkey );
|
length = snprintf( loc_sock_path, sizeof(loc_sock_path), "%s/zms-%06ds.sock", config.path_socks, connkey );
|
||||||
|
if ( length >= sizeof(loc_sock_path) ) {
|
||||||
|
Warning("Socket path was truncated.");
|
||||||
|
length = sizeof(loc_sock_path)-1;
|
||||||
|
}
|
||||||
unlink( loc_sock_path );
|
unlink( loc_sock_path );
|
||||||
|
if ( sizeof(loc_addr.sun_path) < length ) {
|
||||||
|
Error("Not enough space %d in loc_addr.sun_path for socket file %s", sizeof(loc_addr.sun_path), loc_sock_path );
|
||||||
|
}
|
||||||
|
|
||||||
strncpy( loc_addr.sun_path, loc_sock_path, sizeof(loc_addr.sun_path) );
|
strncpy( loc_addr.sun_path, loc_sock_path, sizeof(loc_addr.sun_path) );
|
||||||
loc_addr.sun_family = AF_UNIX;
|
loc_addr.sun_family = AF_UNIX;
|
||||||
if ( bind( sd, (struct sockaddr *)&loc_addr, strlen(loc_addr.sun_path)+sizeof(loc_addr.sun_family)) < 0 )
|
if ( bind( sd, (struct sockaddr *)&loc_addr, strlen(loc_addr.sun_path)+sizeof(loc_addr.sun_family))+1 < 0 )
|
||||||
{
|
{
|
||||||
Fatal( "Can't bind: %s", strerror(errno) );
|
Fatal( "Can't bind: %s", strerror(errno) );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue