From: kanna Date: Thu, 2 Oct 2014 22:20:52 +0000 (-0700) Subject: lib: make a copy of state_data, since pointer can be re-used X-Git-Tag: 0.7.11~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=70f6059b9b7d0dfc65612fc0dced8b3e9b76180e;p=thirdparty%2Flldpd.git lib: make a copy of state_data, since pointer can be re-used 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 --- diff --git a/src/lib/atom.c b/src/lib/atom.c index bfb120e3..a7b60077 100644 --- a/src/lib/atom.c +++ b/src/lib/atom.c @@ -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