Thanks for fixing this. Ryan On Sat, Aug 24, 2013 at 01:40:53PM +0300, Julian Anastasov wrote: > ipvs_get_service() needs to init the allocated svc > for the non-netlink case due to the used CHECK_COMPAT_SVC > macro that includes pe_name[0] check in CHECK_PE. Use > calloc to avoid reading random data. > > For the netlink case use malloc as before. > > Signed-off-by: Julian Anastasov <ja@xxxxxx> > --- > libipvs/libipvs.c | 25 ++++++++++++++++--------- > 1 files changed, 16 insertions(+), 9 deletions(-) > > diff --git a/libipvs/libipvs.c b/libipvs/libipvs.c > index 04473fb..d2fec49 100644 > --- a/libipvs/libipvs.c > +++ b/libipvs/libipvs.c > @@ -930,22 +930,18 @@ ipvs_get_service(__u32 fwmark, __u16 af, __u16 protocol, union nf_inet_addr addr > ipvs_service_entry_t *svc; > socklen_t len; > > - len = sizeof(*svc); > - if (!(svc = malloc(len))) > - return NULL; > - > ipvs_func = ipvs_get_service; > > - svc->fwmark = fwmark; > - svc->af = af; > - svc->protocol = protocol; > - svc->addr = addr; > - svc->port = port; > #ifdef LIBIPVS_USE_NL > if (try_nl) { > struct ip_vs_get_services *get; > struct nl_msg *msg; > ipvs_service_t tsvc; > + > + svc = malloc(sizeof(*svc)); > + if (!svc) > + return NULL; > + > tsvc.fwmark = fwmark; > tsvc.af = af; > tsvc.protocol= protocol; > @@ -978,6 +974,17 @@ ipvs_get_service_err2: > } > #endif > > + len = sizeof(*svc); > + svc = calloc(1, len); > + if (!svc) > + return NULL; > + > + svc->fwmark = fwmark; > + svc->af = af; > + svc->protocol = protocol; > + svc->addr = addr; > + svc->port = port; > + > CHECK_COMPAT_SVC(svc, NULL); > if (getsockopt(sockfd, IPPROTO_IP, IP_VS_SO_GET_SERVICE, > (char *)svc, &len)) { > -- > 1.7.3.4 > > -- > 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 -- 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