]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: Free memory leak
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 19 Mar 2018 02:02:24 +0000 (22:02 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 19 Mar 2018 13:18:10 +0000 (09:18 -0400)
Free the memory leaked stream in failure cases.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
zebra/zserv.c

index 5b279a7cb29f57941d59e23156a574cf6bb4f540..d0aab728f20a3afd390c451b54885f8499c6b80a 100644 (file)
@@ -222,11 +222,15 @@ int zsend_interface_link_params(struct zserv *client, struct interface *ifp)
        struct stream *s = stream_new(ZEBRA_MAX_PACKET_SIZ);
 
        /* Check this client need interface information. */
-       if (!client->ifinfo)
+       if (!client->ifinfo) {
+               stream_free(s);
                return 0;
+       }
 
-       if (!ifp->link_params)
+       if (!ifp->link_params) {
+               stream_free(s);
                return 0;
+       }
 
        zclient_create_header(s, ZEBRA_INTERFACE_LINK_PARAMS, ifp->vrf_id);
 
@@ -234,8 +238,10 @@ int zsend_interface_link_params(struct zserv *client, struct interface *ifp)
        stream_putl(s, ifp->ifindex);
 
        /* Then TE Link Parameters */
-       if (zebra_interface_link_params_write(s, ifp) == 0)
+       if (zebra_interface_link_params_write(s, ifp) == 0) {
+               stream_free(s);
                return 0;
+       }
 
        /* Write packet size. */
        stream_putw_at(s, 0, stream_get_endp(s));
@@ -595,8 +601,10 @@ int zsend_redistribute_route(int cmd, struct zserv *client, struct prefix *p,
        struct stream *s = stream_new(ZEBRA_MAX_PACKET_SIZ);
 
        /* Encode route and send. */
-       if (zapi_route_encode(cmd, s, &api) < 0)
+       if (zapi_route_encode(cmd, s, &api) < 0) {
+               stream_free(s);
                return -1;
+       }
 
        if (IS_ZEBRA_DEBUG_SEND) {
                char buf_prefix[PREFIX_STRLEN];