Hello, On Sun, 18 Aug 2013, Ryan O'Hara wrote: > The pe_name in ipvs_service_t is an array, so comparing it NULL has no > effect. Use strlen to see if pe_name is set. > > Signed-off-by: Ryan O'Hara <rohara@xxxxxxxxxx> Looks good to me. Acked-by: Julian Anastasov <ja@xxxxxx> Or may be we can avoid strlen? Eg. svc->pe_name[0] ? It looks like CHECK_PE has similar problem and more: - Do we really work without NL support if CHECK_PE always succeeds in 'if (s->pe_name)'? I have a doubt. - CHECK_PE and CHECK_IPV4 as part of CHECK_COMPAT_SVC use 'return' and we can leak svc in ipvs_get_service() - in ipvs_get_service() CHECK_PE does not need to be called, it is already part of CHECK_COMPAT_SVC - ipvs_get_service uses malloc but later calls CHECK_PE, may be malloc should be changed with calloc > --- > libipvs/libipvs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libipvs/libipvs.c b/libipvs/libipvs.c > index c3c3b0a..ebc46e9 100644 > --- a/libipvs/libipvs.c > +++ b/libipvs/libipvs.c > @@ -229,7 +229,7 @@ static int ipvs_nl_fill_service_attr(struct nl_msg *msg, ipvs_service_t *svc) > } > > NLA_PUT_STRING(msg, IPVS_SVC_ATTR_SCHED_NAME, svc->sched_name); > - if (svc->pe_name) > + if (strlen(svc->pe_name)) > NLA_PUT_STRING(msg, IPVS_SVC_ATTR_PE_NAME, svc->pe_name); > NLA_PUT(msg, IPVS_SVC_ATTR_FLAGS, sizeof(flags), &flags); > NLA_PUT_U32(msg, IPVS_SVC_ATTR_TIMEOUT, svc->timeout); > -- > 1.8.1.4 Regards -- Julian Anastasov <ja@xxxxxx> -- To unsubscribe from this list: send the line "unsubscribe lvs-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html