]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
lib: make a copy of state_data, since pointer can be re-used
authorkanna <kanna@cumulusnetworks.com>
Thu, 2 Oct 2014 22:20:52 +0000 (15:20 -0700)
committerVincent Bernat <vincent@bernat.im>
Fri, 3 Oct 2014 11:38:22 +0000 (13:38 +0200)
make a copy of state_data, since pointer can be re-used and the comparison checks
can still give false positives

Signed-off-by: kanna <kanna@cumulusnetworks.com>
src/lib/atom.c

index bfb120e3bec4f360dc13829fc0531e77674a4bb9..a7b600770a5426c26f0970068fd65c169903e3ed 100644 (file)
@@ -317,7 +317,8 @@ _lldpctl_do_something(lldpctl_conn_t *conn,
                        type, to_send, mi_send) != 0)
                        return SET_ERROR(conn, LLDPCTL_ERR_SERIALIZATION);
                conn->state = state_send;
-               conn->state_data = state_data;
+               if (state_data)
+                       conn->state_data = strdup(state_data);
        }
        if (conn->state == state_send &&
            (state_data == NULL || !strcmp(conn->state_data, state_data))) {
@@ -342,6 +343,8 @@ _lldpctl_do_something(lldpctl_conn_t *conn,
                        return SET_ERROR(conn, LLDPCTL_ERR_SERIALIZATION);
                /* rc == 0 */
                conn->state = CONN_STATE_IDLE;
+               if (conn->state_data)
+                       free(conn->state_data);
                conn->state_data = NULL;
                return 0;
        } else