- allow raw sockets only with CAP_NET_RAW.
- clear skbuff data before writing CAN frame to it in order to avoid passing
random bytes to user space.
git-svn-id: svn://svn.berlios.de//socketcan/trunk@10
030b6a49-0b11-0410-94ab-
b0dab22257f2
case SOCK_RAW:
switch (protocol) {
case CAN_RAW:
+ if (!capable(CAP_NET_RAW))
+ return -EPERM;
break;
default:
return -EPROTONOSUPPORT;
id |= CAN_RTR_FLAG;
cf = (struct can_frame*)skb_put(skb, sizeof(struct can_frame));
+ memset(cf, 0, sizeof(struct can_frame));
cf->can_id = id;
cf->can_dlc = dlc;
for (i = 0; i < dlc; i++) {
id |= CAN_RTR_FLAG;
cf = (struct can_frame*)skb_put(skb, sizeof(struct can_frame));
+ memset(cf, 0, sizeof(struct can_frame));
cf->can_id = id;
cf->can_dlc = dlc;
for (i = 0; i < dlc; i++) {
case SOCK_RAW:
switch (protocol) {
case CAN_RAW:
+ if (!capable(CAP_NET_RAW))
+ return -EPERM;
break;
default:
return -EPROTONOSUPPORT;