struct cmsghdr *cmsg;
char cmsgbuf[CMSG_SPACE(sizeof(int))];
char buf[1];
+ int *val;
msg.msg_control = cmsgbuf;
msg.msg_controllen = sizeof(cmsgbuf);
cmsg->cmsg_len = CMSG_LEN(sizeof(int));
cmsg->cmsg_level = SOL_SOCKET;
cmsg->cmsg_type = SCM_RIGHTS;
- *((int *) CMSG_DATA(cmsg)) = sendfd;
+ val = (int *)(CMSG_DATA(cmsg));
+ *val = sendfd;
msg.msg_name = NULL;
msg.msg_namelen = 0;
struct cmsghdr *cmsg;
char cmsgbuf[CMSG_SPACE(sizeof(int))];
char buf[1];
- int ret;
+ int ret, *val;
msg.msg_name = NULL;
msg.msg_namelen = 0;
if (cmsg && cmsg->cmsg_len == CMSG_LEN(sizeof(int)) &&
cmsg->cmsg_level == SOL_SOCKET &&
cmsg->cmsg_type == SCM_RIGHTS) {
- *recvfd = *((int *) CMSG_DATA(cmsg));
+ val = (int *) CMSG_DATA(cmsg);
+ *recvfd = *val;
}
out:
return ret;
cmsg->cmsg_len = CMSG_LEN(sizeof(struct ucred));
cmsg->cmsg_level = SOL_SOCKET;
cmsg->cmsg_type = SCM_CREDENTIALS;
- *((struct ucred *) CMSG_DATA(cmsg)) = cred;
+ memcpy(CMSG_DATA(cmsg), &cred, sizeof(cred));
msg.msg_name = NULL;
msg.msg_namelen = 0;
if (cmsg && cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred)) &&
cmsg->cmsg_level == SOL_SOCKET &&
cmsg->cmsg_type == SCM_CREDENTIALS) {
- cred = *((struct ucred *) CMSG_DATA(cmsg));
+ memcpy(&cred, CMSG_DATA(cmsg), sizeof(cred));
if (cred.uid && (cred.uid != getuid() || cred.gid != getgid())) {
INFO("message denied for '%d/%d'", cred.uid, cred.gid);
return -EACCES;
static int instanciate_veth(struct lxc_netdev *netdev)
{
char veth1buf[IFNAMSIZ], *veth1;
- char veth2[IFNAMSIZ];
+ char veth2buf[IFNAMSIZ], *veth2;
int err;
if (netdev->priv.veth_attr.pair)
veth1 = netdev->priv.veth_attr.pair;
else {
snprintf(veth1buf, sizeof(veth1buf), "vethXXXXXX");
- mktemp(veth1buf);
- veth1 = veth1buf;
+ veth1 = mktemp(veth1buf);
}
- snprintf(veth2, sizeof(veth2), "vethXXXXXX");
- mktemp(veth2);
+ snprintf(veth2buf, sizeof(veth2buf), "vethXXXXXX");
+ veth2 = mktemp(veth2buf);
if (!strlen(veth1) || !strlen(veth2)) {
ERROR("failed to allocate a temporary name");
static int instanciate_macvlan(struct lxc_netdev *netdev)
{
- char peer[IFNAMSIZ];
+ char peerbuf[IFNAMSIZ], *peer;
int err;
if (!netdev->link) {
return -1;
}
- snprintf(peer, sizeof(peer), "mcXXXXXX");
-
- mktemp(peer);
+ snprintf(peerbuf, sizeof(peerbuf), "mcXXXXXX");
+ peer = mktemp(peerbuf);
if (!strlen(peer)) {
ERROR("failed to make a temporary name");
return -1;
return 0;
if (console->peer == fd)
- write(console->master, buf, r);
+ r = write(console->master, buf, r);
else
- write(console->peer, buf, r);
+ r = write(console->peer, buf, r);
return 0;
}