@@ -2417,12 +2417,19 @@ do_ip_vs_set_ctl(struct sock *sk, int cmd, void __user *user, unsigned int len)
2417
2417
}
2418
2418
}
2419
2419
2420
+ if ((cmd == IP_VS_SO_SET_ADD || cmd == IP_VS_SO_SET_EDIT ) &&
2421
+ strnlen (usvc .sched_name , IP_VS_SCHEDNAME_MAXLEN ) ==
2422
+ IP_VS_SCHEDNAME_MAXLEN ) {
2423
+ ret = - EINVAL ;
2424
+ goto out_unlock ;
2425
+ }
2426
+
2420
2427
/* Check for valid protocol: TCP or UDP or SCTP, even for fwmark!=0 */
2421
2428
if (usvc .protocol != IPPROTO_TCP && usvc .protocol != IPPROTO_UDP &&
2422
2429
usvc .protocol != IPPROTO_SCTP ) {
2423
- pr_err ("set_ctl: invalid protocol: %d %pI4:%d %s \n" ,
2430
+ pr_err ("set_ctl: invalid protocol: %d %pI4:%d\n" ,
2424
2431
usvc .protocol , & usvc .addr .ip ,
2425
- ntohs (usvc .port ), usvc . sched_name );
2432
+ ntohs (usvc .port ));
2426
2433
ret = - EFAULT ;
2427
2434
goto out_unlock ;
2428
2435
}
@@ -2845,7 +2852,7 @@ static const struct nla_policy ip_vs_cmd_policy[IPVS_CMD_ATTR_MAX + 1] = {
2845
2852
static const struct nla_policy ip_vs_daemon_policy [IPVS_DAEMON_ATTR_MAX + 1 ] = {
2846
2853
[IPVS_DAEMON_ATTR_STATE ] = { .type = NLA_U32 },
2847
2854
[IPVS_DAEMON_ATTR_MCAST_IFN ] = { .type = NLA_NUL_STRING ,
2848
- .len = IP_VS_IFNAME_MAXLEN },
2855
+ .len = IP_VS_IFNAME_MAXLEN - 1 },
2849
2856
[IPVS_DAEMON_ATTR_SYNC_ID ] = { .type = NLA_U32 },
2850
2857
};
2851
2858
@@ -2858,7 +2865,7 @@ static const struct nla_policy ip_vs_svc_policy[IPVS_SVC_ATTR_MAX + 1] = {
2858
2865
[IPVS_SVC_ATTR_PORT ] = { .type = NLA_U16 },
2859
2866
[IPVS_SVC_ATTR_FWMARK ] = { .type = NLA_U32 },
2860
2867
[IPVS_SVC_ATTR_SCHED_NAME ] = { .type = NLA_NUL_STRING ,
2861
- .len = IP_VS_SCHEDNAME_MAXLEN },
2868
+ .len = IP_VS_SCHEDNAME_MAXLEN - 1 },
2862
2869
[IPVS_SVC_ATTR_PE_NAME ] = { .type = NLA_NUL_STRING ,
2863
2870
.len = IP_VS_PENAME_MAXLEN },
2864
2871
[IPVS_SVC_ATTR_FLAGS ] = { .type = NLA_BINARY ,
0 commit comments