|
@@ -275,7 +275,7 @@ int ip_options_compile(struct net *net,
|
|
|
|
|
|
for (l = opt->optlen; l > 0; ) {
|
|
|
switch (*optptr) {
|
|
|
- case IPOPT_END:
|
|
|
+ case IPOPT_END:
|
|
|
for (optptr++, l--; l > 0; optptr++, l--) {
|
|
|
if (*optptr != IPOPT_END) {
|
|
|
*optptr = IPOPT_END;
|
|
@@ -283,7 +283,7 @@ int ip_options_compile(struct net *net,
|
|
|
}
|
|
|
}
|
|
|
goto eol;
|
|
|
- case IPOPT_NOOP:
|
|
|
+ case IPOPT_NOOP:
|
|
|
l--;
|
|
|
optptr++;
|
|
|
continue;
|
|
@@ -294,8 +294,8 @@ int ip_options_compile(struct net *net,
|
|
|
goto error;
|
|
|
}
|
|
|
switch (*optptr) {
|
|
|
- case IPOPT_SSRR:
|
|
|
- case IPOPT_LSRR:
|
|
|
+ case IPOPT_SSRR:
|
|
|
+ case IPOPT_LSRR:
|
|
|
if (optlen < 3) {
|
|
|
pp_ptr = optptr + 1;
|
|
|
goto error;
|
|
@@ -321,7 +321,7 @@ int ip_options_compile(struct net *net,
|
|
|
opt->is_strictroute = (optptr[0] == IPOPT_SSRR);
|
|
|
opt->srr = optptr - iph;
|
|
|
break;
|
|
|
- case IPOPT_RR:
|
|
|
+ case IPOPT_RR:
|
|
|
if (opt->rr) {
|
|
|
pp_ptr = optptr;
|
|
|
goto error;
|
|
@@ -349,7 +349,7 @@ int ip_options_compile(struct net *net,
|
|
|
}
|
|
|
opt->rr = optptr - iph;
|
|
|
break;
|
|
|
- case IPOPT_TIMESTAMP:
|
|
|
+ case IPOPT_TIMESTAMP:
|
|
|
if (opt->ts) {
|
|
|
pp_ptr = optptr;
|
|
|
goto error;
|
|
@@ -369,13 +369,13 @@ int ip_options_compile(struct net *net,
|
|
|
goto error;
|
|
|
}
|
|
|
switch (optptr[3]&0xF) {
|
|
|
- case IPOPT_TS_TSONLY:
|
|
|
+ case IPOPT_TS_TSONLY:
|
|
|
if (skb)
|
|
|
timeptr = &optptr[optptr[2]-1];
|
|
|
opt->ts_needtime = 1;
|
|
|
optptr[2] += 4;
|
|
|
break;
|
|
|
- case IPOPT_TS_TSANDADDR:
|
|
|
+ case IPOPT_TS_TSANDADDR:
|
|
|
if (optptr[2]+7 > optptr[1]) {
|
|
|
pp_ptr = optptr + 2;
|
|
|
goto error;
|
|
@@ -389,7 +389,7 @@ int ip_options_compile(struct net *net,
|
|
|
opt->ts_needtime = 1;
|
|
|
optptr[2] += 8;
|
|
|
break;
|
|
|
- case IPOPT_TS_PRESPEC:
|
|
|
+ case IPOPT_TS_PRESPEC:
|
|
|
if (optptr[2]+7 > optptr[1]) {
|
|
|
pp_ptr = optptr + 2;
|
|
|
goto error;
|
|
@@ -405,7 +405,7 @@ int ip_options_compile(struct net *net,
|
|
|
opt->ts_needtime = 1;
|
|
|
optptr[2] += 8;
|
|
|
break;
|
|
|
- default:
|
|
|
+ default:
|
|
|
if (!skb && !ns_capable(net->user_ns, CAP_NET_RAW)) {
|
|
|
pp_ptr = optptr + 3;
|
|
|
goto error;
|
|
@@ -433,7 +433,7 @@ int ip_options_compile(struct net *net,
|
|
|
}
|
|
|
opt->ts = optptr - iph;
|
|
|
break;
|
|
|
- case IPOPT_RA:
|
|
|
+ case IPOPT_RA:
|
|
|
if (optlen < 4) {
|
|
|
pp_ptr = optptr + 1;
|
|
|
goto error;
|
|
@@ -441,7 +441,7 @@ int ip_options_compile(struct net *net,
|
|
|
if (optptr[2] == 0 && optptr[3] == 0)
|
|
|
opt->router_alert = optptr - iph;
|
|
|
break;
|
|
|
- case IPOPT_CIPSO:
|
|
|
+ case IPOPT_CIPSO:
|
|
|
if ((!skb && !ns_capable(net->user_ns, CAP_NET_RAW)) || opt->cipso) {
|
|
|
pp_ptr = optptr;
|
|
|
goto error;
|
|
@@ -452,9 +452,9 @@ int ip_options_compile(struct net *net,
|
|
|
goto error;
|
|
|
}
|
|
|
break;
|
|
|
- case IPOPT_SEC:
|
|
|
- case IPOPT_SID:
|
|
|
- default:
|
|
|
+ case IPOPT_SEC:
|
|
|
+ case IPOPT_SID:
|
|
|
+ default:
|
|
|
if (!skb && !ns_capable(net->user_ns, CAP_NET_RAW)) {
|
|
|
pp_ptr = optptr;
|
|
|
goto error;
|