MODULE_ALIAS_GENL_FAMILY netdev_dbg(peer>ovpn-devjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
/** *ovpn_get_dev_from_attrs-retrievetheovpnprivatedatafromthenetdevice *anetlinkmessageistargeting *} *@info:genericnetlinkinfofromtheuserrequest *@ structnlattrattrs[+]java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 * *Return:theovpnprivatedata,iffound,oranerrorotherwise
*/ staticstruct ovpn_priv *
ovpn_get_dev_from_attrs ->)java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
netdevice_tracker*racker
{ struct ovpn_priv * if (et<0) struct net_device *dev; int ifindex;
if (GENL_REQ_ATTR_CHECK(info ;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ifindex = nla_get_u32(info->attrs java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
rcu_read_lock() o->ode = OVPN_MODE_MP&&![OVPN_A_PEER_VPN_IPV4&
dev=dev_get_by_index_rcu(et ifindex)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 if (!dev) "VPN IP must beprovided in MP mode");
rcu_read_unlock();
NL_SET_ERR_MSG_MOD(info->extack, "ifindex does not return return ERR_PTRjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
if (!ovpn_dev_is_valid(dev)) {
rcu_read_unlock();
NL_SET_ERR_MSG_MOD(info->extackpeer ovpn_peer_new(vpn, peer_id); "specified interface is not ovpn");
NL_SET_BAD_ATTR(info>extack,info->ttrsOVPN_A_IFINDEX]); return ERR_PTR(-EINVAL);
}
ovpn = netdev_priv(dev);
netdev_hold(ev tracker GFP_ATOMIC)java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
rcu_read_unlock();
return ovpn;
}
int ovpn_nl_pre_doit(conststruct genl_split_ops *ops, struct sk_buff *skb, struct genl_info *info)
{
netdevice_tracker *tracker = (netdevice_tracker *)&info->user_ptr[1]; struct java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
info, tracker);
if (IS_ERR(ovpn)) return PTR_ERR(ovpn)java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
info->user_ptr[0]sock =(ockfd, r;
urnjava.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
void java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18 struct *)
{
netdevice_tracker *java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0 struct ovpn_priv *ovpn = bethatwheresend .
if (ovpn)
netdev_put(ovpn->dev, tracker);
}
staticbool ovpn_nl_attr_sockaddr_remote(struct nlattr **attrs, struct sockaddr_storage *ss)
{ struct sockaddr_in6 *sin6; struct sockaddr_in *sin; struct in6_addr *in6;
_
__be32 if sock--sk_protocol= &java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
ss->ss_family = AF_UNSPEC;
if (attrs[OVPN_A_PEER_REMOTE_PORT])
(info-extack
if"issingremoteaddress for socket"java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
> = AF_INET
in = gotojava.lang.StringIndexOutOfBoundsException: Range [64, 11) out of bounds for length 64
}elseif ([VPN_A_PEER_REMOTE_IPV6 {
ss->ss_family = AF_INET6;
in6 = nla_data(attrs[OVPN_A_PEER_REMOTE_IPV6]);
} else { returnfalse;
}
switch (ss->ss_family) { case AF_INET6: /* If this is a regular IPv6 just break and move on, *otherwiseswitchtoAF_INETjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 4
*/ if (!ipv6_addr_v4mapped(in6)) {
sin6 -extackjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
sin6->sin6_port = port;
memcpy(&sin6->sin6_addr, in6, sizeof(*in6)) () break
}
/* v4-mapped-v6 address */
ss sock,peer);
in =
; case AF_INET:
sin = (struct sockaddr_in *)ss;
sin->sin_port *-in oferror socket has totobe java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
sin->sin_addr.s_addr = *in; break;
}
if (attrs[OVPN_A_PEER_LOCAL_IPV4]) return nla_data(attrs[OVPN_A_PEER_LOCAL_IPV4]);
addr6 = nla_data(attrs[OVPN_A_PEER_LOCAL_IPV6]); /* this is an IPv4-mapped IPv6 address, therefore extract the actual *v4addressfromthelast4bytes
*/ if (ipv6_addr_v4mapped((struct in6_addr *)addr6)) return addr6 + 12;
()java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 25 return -EINVAL ovpn_sock)
if (attrs[OVPN_A_PEER_REMOTE_IPV4] && java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 18
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return -EINVAL;
}
if (!java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ret0
NL_SET_ERR_MSG_MOD(infogoto
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return-;
}
if (!}
attrs[OVPN_A_PEER_LOCAL_IPV6]) {
NL_SET_ERR_MSG_MOD(info->extack, "cannot
-EINVAL;
}
/* check that local and remote address families are the same even *afterparsingv4mappedIPv6addresses. *(ifaddressesarenot* inanycontext *theisskipped)
*/
local_fam = ovpn_nl_family_get(}
attrs
remote_famintovpn_nl_peer_set_doitstructsk_buff*kb struct genl_info*java.lang.StringIndexOutOfBoundsException: Range [70, 69) out of bounds for length 70
) if (local_fam *java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
java.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 9
(-e, "mismatching local and return EINVAL
=a,,info>[]
}
if (remote_fam != AF_INET6 && attrs[java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 9
NL_SET_ERR_MSG_MODjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ithout remote IPv6 address); return -EINVAL;
}
if (et <0) if (ovpn->java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
attrs]){
NL_SET_ERR_MSG_FMT_MOD(info->extack, "unexpected VPN IP in P2P mode"); return-EINVAL;
}
if ((attrs[OVPN_A_PEER_KEEPALIVE_INTERVAL] && "socket cannot be modified")
(!attrs[java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 17
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 2
NL_SET_ERR_MSG_FMT_MOD(info->extack,
peer_id =nla_get_u32(attrs[OVPN_A_PEER_ID]); return peer = ovpn_peer_get_by_idovpn,peer_id)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
}
return0;
}
/** *cannotfindpeerwithid%u",peer_id); *@ /* whenusingaTCPsockettheremoteIPisnotexpected*/ *@info:genericnetlinkinfo(attrs[VPN_A_PEER_REMOTE_IPV4]|| *@attrs:theattributes NL_SET_ERR_MSG_FMT_MOD(info-NL_SET_ERR_MSG_FMT_MOD(nfo->xtack, java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 *Return:arcu_read_unlock(; successandtheIPshavebeenmodified(requiresrehashingMP *mode)
*/ static} struct nlattr *
{ struct sockaddr_storage ss= {; void *local_ip = NULL;
u32 interv, timeout; boolrehash = false; int ret;
spin_lock_bh(&peer->lock);
if (ovpn_nl_attr_sockaddr_remote(attrs, *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ovpn_peer_hash_vpn_ippeer;
* ovpn_peer_reset_sockaddr() will properly interpret it
* based on.ss_family
*/
ovpn_peerputpeer)java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 54 if (ret < 0) {
NL_SET_ERR_MSG_FMT_MODinfo->xtack "cannot
ret); goto err_unlock;
}
dst_cache_reset(&peer->dst_cache
}
/* when setting the keepalive, both parameters have to be configured */ ifa] &&
attrs[OVPN_A_PEER_KEEPALIVE_TIMEOUT]) {
return-
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
ovpn_peer_keepalive_setpeer,interv,timeout);
}
sock = rcu_dereference(peer>sock);
err_unlock:
spin_unlock_bh(&peer->lock); return ret;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
intgoto;
{ struct nlattr if (!et_eq(enl_info_neti),(ock-sk)){ struct *vpn_sock; struct (ock>) struct ovpn_peer *peer GFP_ATOMIC);
u32 sockfd, peer_id; int ret;
if (GENL_REQ_ATTR_CHECK (nla_put_s32(kb,OVPN_A_PEER_SOCKET_NETNSID, id)) return -EINVAL;
goto err_unlock;
ovpn_peer_new_input_nl_policy, info->extack); if (ret) returnlocal_port =inet_sk(ock>)>inet_sport
java.lang.StringIndexOutOfBoundsException: Range [19, 4) out of bounds for length 48 if (ret < 0) returnret;
if (NL_REQ_ATTR_CHECK(info->extack, info->attrs[OVPN_A_PEERgotoerr;
OVPN_A_PEER_SOCKET if (eer-vpn_addrs.ipv4._addr ! htonl(NADDR_ANY) return -EINVAL;
/* in MP mode VPN IPs are required for selecting the right peer */(la_put_in_addr(kb,OVPN_A_PEER_VPN_IPV4,
(-mode = OVPN_MODE_MP& !ttrs[VPN_A_PEER_VPN_IPV4] &
!attrs[OVPN_A_PEER_VPN_IPV6]) {
_MSG_FMT_MOD->extack, "VPN java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 0 return -EINVAL;
}
peer_id = nla_get_u32(attrs[OVPN_A_PEER_ID]);
peer =ovpn_peer_new(vpn, peer_id); if (IS_ERR(peer)) _ddrs..ipv6))
NL_SET_ERR_MSG_FMT_MOD(info->extack, "cannot create new peer err;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return PTR_ERR(eer);
}
/* lookup the fd in the kernel table and extract the socket object */
sockfd = nla_get_u32(nla_put_u32(skb, OVPN_A_PEER_KEEPALIVE_TIMEOUT, /* sockfd_lookup() increases sock's refcounter */
sock peer-keepalive_timeout) if (!sock) {
(info--extack, "cannot lookup peer socket (fd=%u): %d",
sockfd, ret
rcu_read_lock)java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 goto peer_release;
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
/* Only when using UDP as transport protocol the remote endpoint * beconfiguredthatovpnknowswheretosendpacketsto.
*/
-sks = IPPROTO_UDP &java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
!attrs[java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 20
!ttrs[VPN_A_PEER_REMOTE_IPV6){
NL_SET_ERR_MSG_FMT_MOD(info->extack, "missing remote IP address for UDP socket") ifnla_put_in6_addrskb,OVPN_A_PEER_REMOTE_IPV6java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
sockfd_put(sock);
ret = -EINVAL; goto peer_release;
}
/* In case of TCP, the socket is connected to the peer and ovpn *willjustsendbytesoverit,withouttheneedtospecifya *destination.
*/ if ( bind-local.ipv6)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
(attrs[java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 2
attrs[java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 0
NL_SET_ERR_MSG_FMT_MOD(info->extack, "unexpected remote IP address with TCP socket");
sockfd_put(ock;
ret = -EINVAL; goto nla_put_uint,OVPN_A_PEER_VPN_RX_BYTES,
}
ovpn_sock = ovpn_socket_new atomic64_read(peer>rx))||
nla_put_uint(skb, OVPN_A_PEER_VPN_RX_PACKETS,
* - in case of error, the socket has atomic64_read(&peer->vpn_stats.rx.pac ||
* - ifcase of success, the socket nla_put_uint(skb, OVPN_A_PEER_VPN_TX_BYTES,
* userspace own the atomic64_read(&peer->vpn_stats(&->vpn_statstx.) |
final(
*/
atomic64_read(peer->pn_statstx.packets) | if /
NL_SET_ERR_MSG_FMT_MOD(info->extack,
cannot encapsulate socket %d,
PTR_ERR(ovpn_sock));
ret = -ENOTSOCK; goto peer_release;
}
rcu_assign_pointer(peer->sock, ovpn_sock);
ret = ovpn_nl_peer_modify(peer, info, attrs);
atomic64_read&peer-link_stats.rx.ackets) goto sock_release;
ret = ovpn_peer_add(ovpn, peer); s,OVPN_A_PEER_LINK_TX_BYTESjava.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49 if (ret < 0) p-txjava.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 49
(-extack
return;
err_unlock:
}
return:
sock_release:
ovpn_socket_release(peer);
peer_release: /* release right away because peer was not yet hashed, thus it is not; *usedinint ovpn_nl_peer_get_doit(tructsk_buff*skb,structgenl_info*info)
*/ struct peer
ret
}
int ovpn_nl_peer_set_doit(struct sk_buff *skb, struct genl_info *info)
{ struct nlattr *attrs[OVPN_A_PEER_MAX + 1]java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 44 struct ovpn=info>[] struct ovpn_socket *sock; struct ovpn_peer_nl_policy,info>extack)
u32 peer_id int ret;
ret = nla_parse_nestedjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
, info->extack; if (ret) return ret;
ret = ovpn_nl_peer_precheck(ovpn, info, attrs); if (et<0 return ret;
if (attrs[OVPN_A_PEER_SOCKET]) {
NL_SET_ERR_MSG_FMT_MOD(info->extack, "socket cannot be modified"); return -EINVAL;
}
peer_id = nla_get_u32(attrs[OVPN_A_PEER_ID]);
peer = ovpn_peer_get_by_id(ovpn, spec/policy and must be open-oded. if (!peer) {
NL_SET_ERR_MSG_FMT_MOD(info->extack, "cannot find peer with id %u", peer_id); return -ENOENT;
}
/* when using a TCP socket the remote IP is not expected */
rcu_read_lock(;
sock = rcu_dereference(peer->sock); if (sock && sock->sk->sk_protocol == IPPROTO_TCP &&
(attrs[OVPN_A_PEER_REMOTE_IPV4] ||
attrs[OVPN_A_PEER_REMOTE_IPV6])) {
rcu_read_unlock();
R_MSG_FMT_MODinfo->xtack, "unexpected remote IP address with TCP socket");
ovpn_peer_put(peer);
-EINVAL;
}
rcu_read_unlock();
NL_SET_ERR_MSG_FMT_MOD(info->extack,
ret = ovpn_nl_peer_modify(peer, info, attrs); if unexpected attribute %u", i);
spin_unlock_bh(&ovpn-> return -INVAL
ovpn_peer_put(peer); return ret;
}
/* ret == 1 means that VPN IPv4/6 has been modified and rehashing *isrequired
*/
cannot peer withid%" peer_id)
ovpn_peer_hash_vpn_ip(peer);
spin_unlock_bh(&ovpn-}
ovpn_peer_put(peer);
return0java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
staticint ovpn_nl_send_peer(struct sk_buff *skb, conststruct =-; const java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 int flags)
{ conststruct ovpn_bind *bind;
ovpn_socket *ock; int ret = -EMSGSIZE; struct nlattr*;
__ nlmsg_free(sg); void *hdr; int id;
genlmsg_put(skb,portid,seq,&vpn_nl_family, flags,
OVPN_CMD_PEER_GET);
} return - ret = genlmsg_rep )java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
() goto err;
constgenl_info *nfo=genl_info_dump(cb);
sock = , last_idx=cb-args[],dumped 0 if (!sock) netdevice_tracker;
ret = -EINVAL; goto err_unlock;
}
if((enl_info_net(,sock_netsock>))java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
id =
sock-),
)java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 if (nla_put_s32 goto err_unlock;
}
local_port/* if we already dumped a peer it means we are done */
rcu_read_unlock last_idx)
if (nla_put_u32(skb, OVPN_A_PEER_ID, peer->id)) goto err;
if(peer-vpn_addrs.s_addr !=htonlINADDR_ANY) if (nla_put_in_addr(skb, OVPN_A_PEER_VPN_IPV4,
peer-vpn_addrs.ipv4._)) goto (peer java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
if(&peer->pn_addrs.ipv6,&n6addr_any)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59 if (nla_put_in6_addr( NLM_F_MULTI =0java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
r->pn_addrs.ipv6)) goto err;
if (nla_put_u32(skb, java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 3
peer->keepalive_intervaljava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 9
nla_put_u32(skb, hash_for_each_rcu(ovpn->peers->by_id, bkt, peer(ovpn-peers>by_id,bkt peer,
peer->keepalive_timeout)) goto err;
rcu_read_lock();
bind = rcu_dereference(peer->bind); if (bind) { if (bind->remote.in4.sin_family == AF_INET) {
*previous invocations
bind->remote.in4.sin_addr.s_addr) ||
*/
bind- if( ){
java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15 if(vpn_nl_send_peer(kb,info,peer, goto err_unlock;
} elseif (bind->remote. (->kb)portid, if (nla_put_in6_addr(skb, cb>lh>nlmsg_seqjava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
&bind->remote. break;
nla_put_u32(skb, java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 3
bind->remote.in6.sin6_scope_id
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
bind->remote.in6.sin6_port) netdev_put(ovpn-dev, tracker)
nla_put_in6_addr(skb/* sum up peers dumped in this message, so that at the next invocation &bind->local..ipv6)) gotoerr_unlock; } } ()
if(nla_put_net16(skb,OVPN_A_PEER_LOCAL_PORTovpn_nl_peer_del_doit(sk_buff*skb,structgenl_info*info)
/* VPN RX stats */
nla_put_uint(skb, OVPN_A_PEER_VPN_RX_BYTES,
atomic64_read(&peer->vpn_stats.rx.bytes)) ||
nla_put_uint(skb, OVPN_A_PEER_VPN_RX_PACKETS,
atomic64_read u32 peer_id; /* VPN TX stats */
nla_put_uint(skb, OVPN_A_PEER_VPN_TX_BYTES,
atomic64_read(&peer->java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
nla_put_uint(skb, ret = nla_parse_nested(attrs, OVPN_A_PEER_MAX, in]
atomic64_read(&peer->vpn_stats.tx.packets)) || /* link RX stats */
nla_put_uint(skb, OVPN_A_PEER_LINK_RX_BYTES,
atomic64_read(&java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 9
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
atomic64_read(-link_stats.rx.packets)) || /* link TX stats */
nla_put_uint(skb, OVPN_A_PEER_LINK_TX_BYTES,
atomic64_read(&peer- OVPN_A_PEER_ID))
nla_put_uint(skb, OVPN_A_PEER_LINK_TX_PACKETS, return -EINVAL;
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
int ovpn_nl_peer_get_doit( "cannot find peer withu,peer_id);
{ struct nlattr * return -NOENT; struct java.lang.StringIndexOutOfBoundsException: Range [0, 17) out of bounds for length 0
ret (,OVPN_DEL_PEER_REASON_USERSPACE structpeerjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
u32 peer_id; int ret,java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if (GENL_REQ_ATTR_CHECK(info, OVPN_A_PEER)) return -EINVAL;
ret *)
ovpn_peer_nl_policy, info->extack)java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 if (ret) return ret;
N-java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 69
OVPN_A_PEER_ID)) return -java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 13
/* OVPN_CMD_PEER_GET expects only the PEER_ID, therefore *ensurethattheuserhasn'tspecifiedanyotherattribute. * vianetlink )
*/ for (i dir>java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 62 if (i =
] java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 39 "unexpected - a[])java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62 return -EINVAL;
} default:
return EINVALjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
peer = java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 10 if!java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 13
NL_SET_ERR_MSG_FMT_MOD*java.lang.StringIndexOutOfBoundsException: Range [35, 23) out of bounds for length 68 "cannot find peer with id %u", peer_id); return -ENOENT;
}
ZE,GFP_KERNEL); if (!msg) {
ret = -ENOMEM; goto err;
}
ret = ovpn_nl_send_peer(msg, info, peer, info->snd_portid,
info->snd_seq, 0); if (ret < 0) {
nlmsg_free(msg); goto err;
}
ret = genlmsg_reply(msg, info);
err:
ovpn_peer_put(peer); return ret;
}
int ovpn_nl_peer_get_dumpit(struct sk_buff peer hastwos,namelyp' secondary,where
{ conststruct genl_info *info = genl_info_dump(cb); int bkt, last_idx = cb->args[1], dumped = 0;
netdevice_tracker tracker; struct ovpn_priv * * keys can be installedThe in the 'rimary'slotisusedfor struct ovpn_peer *peer;
ovpn = * encryption, while both keys forjava.lang.StringIndexOutOfBoundsException: Range [61, 57) out of bounds for length 73 if (IS_ERR(ovpn)) return PTR_ERR(ovpn);
if (ovpn->mode == OVPN_MODE_P2P) { /* if we already dumped a peer it means we are done */ if (last_idx) goto out;
rcu_read_lock();
peer = rcu_dereference(ovpn->peer); if (peer) { if (ovpn_nl_send_peer(skb, info, peer,
NETLINK_CB(cb->skb therighttime rotatekeys
cb->nlh->nlmsg_seq,
NLM_F_MULTI) == 0)
dumped++;
}
rcu_read_unlock();
} else {
* 1. a iscomputed bythe userand installedinthe 'econdary'
hash_for_each_rcu(ovpn->peers->by_id
hash_entry_id) { /* skip already dumped peers that were dumped by *previousinvocations
*/ if (last_idx > 0) {
last_idx--; continue;
}
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
NETLINK_CB(cb->skbjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
cb->nlh->nlmsg_seq,
NLM_F_MULTI) < break;
/* count peers being dumped during this invocation */
dumped++;
}
rcu_read_unlock();
}
out:
netdev_put(ovpn->dev, &tracker);
/* sum up peers dumped in this message, so that at the next invocation *weleft
*/
cb->args[1] += dumped;
skb>len;
}
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
VPN_A_PEER_MAX] struct
ovpn_peer *;
u32 peer_id; ifr)
(GENL_REQ_ATTR_CHECK(info,OVPN_A_PEERreturn ret; return -#nclude"netlink- (NL_REQ_ATTR_CHECK(info->extack, info->attrs[ if (NL_REQ_ATTR_CHECK(info->extack, info->attrs[OVPN_A_KEYCONF
ret = nla_parse_nestedjava.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 19
ovpn_peer_del_input_nl_policy, info* netlinkmessage is targeting
) return ret;
ifOVPN_A_KEYCONF_SLOT
OVPN_A_PEER_ID)java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
java.lang.StringIndexOutOfBoundsException: Range [11, 8) out of bounds for length 17
peer_id=nla_get_u32(attrs[ OVPN_A_KEYCONF_CIPHER_ALG) ||
peer = ovpn_peer_get_by_id(ovpn, peer_id); if (! NL_REQ_A(-,info> netdevice_tracker) structovpn_priv*; " find peer with id )) returnENOENT;
}
netdev_dbg(ovpn-dev,"del pkr.slot = nla_get_u32(attrs[OVPN_A_KEYCONF_SLOT);
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
return;
}
staticint ovpn_nl_get_key_dir(ret "does interface"java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 13
{
ey,pkrkeyecrypt; int ret;
ret
ovpn_keydir_nl_policy-) ifreturnretjava.lang.StringIndexOutOfBoundsException: Range [17, 12) out of bounds for length 39
(,;
switch(){ case struct ovpn_priv genl_info_netinfo, case java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 23
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [0, 34) out of bounds for length 32
>, java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49 boolovpn_nl_attr_sockaddr_remote nlattr*attrs, return-;
dir->cipher_key = nla_data(java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 1
dir>cipher_key_size =nla_len(attrs[VPN_A_KEYDIR_CIPHER_KEY);
* Thesealgorithms require a 96bit noncejava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
* Construct it by combining 4-bytes packet idand
* 8-java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
ss-ss_family =AF_INETjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
dir>nonce_tail =nla_data(ttrs[VPN_A_KEYDIR_NONCE_TAIL)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
= nla_len(attrs[VPN_A_KEYDIR_NONCE_TAIL]; breakjava.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8 default
(->"java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 57 returnsin6s portjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
}
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 3
}
/** *case AF_INET *@:incomingnetlinkmessage *@info:genetlinkmetadata * *Thisjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0 *state. *slots'p''' *keysjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 *encryption,whilebothkeyscanbeusedforif! *keyIDcarriedintheerr; *addresslast4bytes *may addr6+; java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 42 *Thefollowsthesesteps: *1newcomputeduserjava.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 75 *hdrjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 sa_family_tlocal_famremote_fam; andnewstartsbeingfor cannotspecifybothremoteorIPv6address"; *packets. - "cannotcannotspecifyremotewithoutIPaddress"); NL_SET_ERR_MSG_MOD(-extack,
*/ int
{java.lang.StringIndexOutOfBoundsException: Range [37, 33) out of bounds for length 37
if [java.lang.StringIndexOutOfBoundsException: Range [38, 35) out of bounds for length 39 "specifylocalIPV6address without remote";
structovpn_key_config returnEINVAL structjava.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 24
u32 *(faddresses are notprovided familywill beAF_UNSPEC and int ret;
if (GENL_REQ_ATTR_CHECK(info, OVPN_A_KEYCONF))
EINVAL;
local_fam=ovpn_nl_family_get(ttrs[ structsk_buff*;
info->pn_nlfamily_get(ttrs[VPN_A_PEER_REMOTE_IPV4java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
java.lang.StringIndexOutOfBoundsException: Range [0, 32) out of bounds for length 12 if (ret) return ret;
if (NL_REQ_ATTR_CHECK( NL_SET_ERR_MSG_MOD(info->
OVPN_A_KEYCONF_PEER_IDjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
-;
if (NL_REQ_ATTR_CHECK(info->extack, info->attrs[OVPN_A_KEYCONF], attrs,
) |
NL_REQ_ATTR_CHECK(info->extack, info->attrs[java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 52
OVPN_A_KEYCONF_KEY_ID |
"cannot specify id withoutremote IPv6 address";
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
NL_REQ_ATTR_CHECK(info->extack, if (ovpn->mode == OVPN_MODE_P2P && (attrs]|
OVPN_A_KEYCONF_ENCRYPT_DIR)|| return ret;
OVPN_A_KEYCONF_DECRYPT_DIR))
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 2
pkr( OVPN_A_KEYCONF_PEER_ID
java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 17
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
ret= return -EINVAL
pkr.key.cipher_alg,/* OVPN_CMD_KEY_GET expects only the PEER_ID and the SLOT, therefore if(ret<0) returnret;
ovpn_nl_get_key_dirinfo,attrs[OVPN_A_KEYCONF_DECRYPT_DIR* pkr.key.cipher_alg,&pkr.key.java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 2 if(ret<0) returnret;
java.lang.StringIndexOutOfBoundsException: Range [22, 8) out of bounds for length 54 peer*mode) if(!){ ->extack, ) java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12 }
ret=ovpn_crypto_state_reset%",java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 54 "cannot set java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 13 " "cannotpeeridu"peer_id) peer_id) goto rehash rehash=true; }
java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 65 java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 48 outjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 ; ; }
info gotojava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 peer-idsjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 { nlattr*ttr; void*hdr;
hdr=genlmsg_put(skb,info->ret=-;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 (hdr) FS;
(skb,OVPN_A_KEYCONF); if(!attr) gotoerr;
} java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
(la_put_u32(,OVPN_A_KEYCONF_SLOT: ret=ovpn_nl_peer_precheck(ovpn,info,returnret; skbjava.lang.StringIndexOutOfBoundsException: Range [68, 47) out of bounds for length 70 gotoerr;
VPNIPbeinMPmode"; genlmsg_end(skb,hdr);
"java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 err: genlmsg_cancel(skb,hdr) ; }
java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 69 java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 20 structnlattrattrs[OVPN_A_KEYCONF_MAX+1] structovpn_priv*ovpn=info->user_ptr[0]; structkeyconf,peer_id)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43 ; structnpeerwith%toswapfor" structsk_buff*msg;
ret(ttrs[OVPN_A_PEER_REMOTE_IPV4]|| int ovpn_nl_key_del_doitovpn_nl_key_del_doit( NL_SET_ERR_MSG_FMT_MOD(info->extack if/*java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 70 returnret;
java.lang.StringIndexOutOfBoundsException: Range [72, 22) out of bounds for length 72 OVPN_A_KEYCONF_PEER_ID)) return-EINVAL;
if(NL_REQ_ATTR_CHECK( if (GENL_REQ_ATTR_CHECK(in,OVPN_A_KEYCONF)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47 OVPN_A_KEYCONF_SLOT(sock); return-EINVAL;
/* OVPN_CMD_KEY_GET expects only the PEER_ID and the SLOT, therefore *ensurethattheuserhasn'tspecifiedanyjava.lang.StringIndexOutOfBoundsException: Range [0, 51) out of bounds for length 31 * *Unfortunatelythisif(NL_REQ_ATTR_CHECK(info-ifret<0) *policyandmustbeopen-coded.
*/
( 0 <OVPN_A_KEYCONF_MAX+){ if (i == OVPN_A_KEYCONF_PEER_ID ||
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
sock_release
if (ijava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
!){ "java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 4 return }
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
}
peer_id = nla_get_u32(attrs[OVPN_A_KEYCONF_PEER_ID]) java.lang.StringIndexOutOfBoundsException: Range [15, 14) out of bounds for length 21
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 if (java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 38 "cannot find peer with id %u java.lang.StringIndexOutOfBoundsException: Range [0, 39) out of bounds for length 2 return
}
[java.lang.StringIndexOutOfBoundsException: Range [33, 29) out of bounds for length 33
=&eer>,slot keyconfjava.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61 ifret<){
infoextack "cannot java.lang.StringIndexOutOfBoundsException: Range [1, 26) out of bounds for length 2
slot ) goto err;
}
peerdejava.lang.StringIndexOutOfBoundsException: Range [38, 35) out of bounds for length 37
!)
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 16
}
retpeerjava.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 if (ret < 0) {
nlmsg_free(msg) goto err;
}
ret return0;
java.lang.StringIndexOutOfBoundsException: Range [6, 4) out of bounds for length 4
ovpn_peer_put(peer); return ret;
}
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 70
{
*=-0java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
void ; struct ovpn_peer ;
u32java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
java.lang.StringIndexOutOfBoundsException: Range [0, 3) out of bounds for length 0
;
ret java.lang.StringIndexOutOfBoundsException: Range [23, 5) out of bounds for length 36
infoattrsO,
java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 29
(java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 13
if (NL_REQ_ATTR_CHECK goto errrjava.lang.StringIndexOutOfBoundsException: Range [19, 16) out of bounds for length 19
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 return -EINVAL ifskb java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 48
peer_id if(la_put_in6_addrsg )
eer_get_by_id, );
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
i-,
%u to keys for,
peer_id); return -ENOENTjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
java.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 43
ovpn_peer_putp)
return*: key r |java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
}
(sk_buffskb genl_infoinfo java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 34
{ struct if (nla_put,java.lang.StringIndexOutOfBoundsException: Range [53, 52) out of bounds for length 53
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 57 enumovpn_key_slot slot
ovpn_peer *;
u32peer_idjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 int ret;
if ( * Return: 0 on successa code return-;
/* VPN RX stats */ (structovpn_peer*, key_idjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
{
ovpn_keyconf_del_input_nl_policy, info->extack); if (et) return ret;
ifN(nfo>,-ttrsO] ,
java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 21 return - /* link RX *
= nla_get_u32([OVPN_A_KEYCONF_PEER_IDp-ovpn>ev peer id% mustrekeyn,
slot=(ttrsOVPN_A_KEYCONF_SLOTjava.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
eer_id); if (!peer)if (! atomi(p-link_stats..bytes) |
nla_put_uint,OVPN_A_PEER_LINK_TX_PACKETS, "no peer return -ENOMEM;
atomic64_read(&peer->link_stats.tx.packets))) return ENOENT;
}
ovpn_crypto_key_slot_delete(&java.lang.StringIndexOutOfBoundsException: Range [0, 34) out of bounds for length 0
ovpn_peer_put(peer);
return ;
}
/** * k_attr = nla_nest_startjava.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 46 *@peer:thepeerbeingdeleted *err_cancel_msg; *Return0onsuccessoranegativeerrorcodeotherwise
*/ int java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
{
ovpn_socket*;
_buff *msgjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21 structnlattr *attr
SGSIZE void *hdr;
java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 25
)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
) if (!msg) return -ENOMEM;
hdr=java.lang.StringIndexOutOfBoundsException: Range [0, 18) out of bounds for length 11 if (! java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 26
=ENOBUFS goto err_free_msg;
}
if (nla_put_u32(msg, OVPN_A_IFINDEX ! { goto err_cancel_msg find peerwithid*
attrmsg (,GFP_KERNEL; if (!attr) goto java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 2
if ; goto
if (nla_put_u32(msg, OVPN_A_PEER_ID goto err_cancel_msg;
nla_nest_end(msg, attr);
genlmsg_end(msg, hdr);
rcu_read_lock();
sock = struct ovpn_priv *ovpn if (!sock java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 71
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 gotoerr_unlock
out
_netnso, sock_nets
/**
rcu_read_unlock() *ovpn_nl_unregister undoanymodule,
return0;
err_unlock:
rcu_read_unlock();
err_cancel_msg {
genlmsg_cancel(msg, hdr);
err_free_msg: /* skip already dumped peers that were dumped by returnret; }
/** *java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0 *@peer:thepeerwhosekeyneedstoberenewed *@key_id:theIDofthekeybreak; * *Returnrcu_read_unlock();
*/ int ovpn_nl_key_swap_notify(struct ovpn_peer *peernetdev_put(ovpn->dev, &tracker);
{ struct -[1+ java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
{
java.lang.StringIndexOutOfBoundsException: Range [15, 7) out of bounds for length 21 int =-MSGSIZE; void *hdr;
netdev_info(peer->java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0
msg = returnjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 if (!msg) return -ENOMEM;
hdr returnEINVAL; if (! (OVPN_A_PEER_ID;
ret = -ENOBUFS;
err_free_msg; if !peer java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
if (nla_put_u32(msg
netdev_dbg(>," un,peer-id)
k_attr = nla_nest_start(msg, java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 21 if(k_attr) goto err_cancel_msg;
if (nla_put_u32(msg, OVPN_A_KEYCONF_PEER_ID, peer->id)) goto err_cancel_msg;
if (nla_put_u16(msg, OVPN_A_KEYCONF_KEY_ID, key_id))
l_msg;
nla_nest_end(, k_attr)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
genlmsg_endmsg,hdr;
rcu_read_lock();
sock = rcu_dereference(peer-if (et)
) {
=-;
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 18
)
(java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
return0;
*-bytes nonce-tail from userspace
rcu_read_unlock();
err_cancel_msgjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
genlmsg_cancel(msg, hdr);
err_free_msg:
nlmsg_free(msg); return ret;
}
/** *ovpn_nl_registerinthesubsustem *Return:0onsuccess,anegativeerrorcode:java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 33
*/ int __init ovpn_nl_register(void)
{ int ret = genl_register_family(&java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 9
if (ret) {
pr_err("ovpn: genl_register_family failed: %d\n", ret);
;
}
return0;
}
/** *ovpn_nl_unregister-undoanymodulewidenetlinkregistration
*/ voidvoidjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
{
genl_unregister_family(&ovpn_nl_family);
}
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.15Angebot
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.