ERROR("failed to create hashed name for monitor socket");
return-1;
ERROR("Failed to create hashed name for monitor socket");
gotoon_error;
}elseif((size_t)ret>=len){
errno=ENAMETOOLONG;
SYSERROR("The name of monitor socket too long (%d bytes)",ret);
gotoon_error;
}
/* replace @ with \0 */
addr->sun_path[0]='\0';
INFO("using monitor socket name \"%s\" (length of socket name %zu must be <= %zu)",&addr->sun_path[1],strlen(&addr->sun_path[1]),sizeof(addr->sun_path)-3);
INFO("Using monitor socket name \"%s\" (length of socket name %zu must be <= %zu)",&addr->sun_path[1],strlen(&addr->sun_path[1]),sizeof(addr->sun_path)-3);
return0;
on_error:
return-1;
}
intlxc_monitor_open(constchar*lxcpath)
...
...
@@ -214,19 +222,12 @@ int lxc_monitor_open(const char *lxcpath)
structsockaddr_unaddr;
intfd;
size_tretry;
size_tlen;
intbackoff_ms[]={10,50,100};
if(lxc_monitor_sock_name(lxcpath,&addr)<0)
return-1;
len=strlen(&addr.sun_path[1]);
DEBUG("opening monitor socket %s with len %zu",&addr.sun_path[1],len);
if(len>=sizeof(addr.sun_path)-1){
errno=ENAMETOOLONG;
SYSERROR("The name of monitor socket too long (%zu bytes)",len);
return-1;
}
DEBUG("Opening monitor socket %s with len %zu",&addr.sun_path[1],strlen(&addr.sun_path[1]));