From 46a5f939b66da80ecc8545e720d21327569e2d2f Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Sat, 23 Nov 2013 00:48:54 +0100 Subject: [PATCH] coverity: add code annotation to remove false positives --- src/client/lldpcli.c | 4 ++++ src/daemon/event.c | 2 ++ src/daemon/interfaces-linux.c | 2 ++ src/daemon/lldpd.c | 4 ++++ 4 files changed, 12 insertions(+) diff --git a/src/client/lldpcli.c b/src/client/lldpcli.c index 5498c579..a5952dc6 100644 --- a/src/client/lldpcli.c +++ b/src/client/lldpcli.c @@ -467,6 +467,8 @@ main(int argc, char *argv[]) /* Process file inputs */ while (gotinputs && !TAILQ_EMPTY(&inputs)) { + /* TAILQ_REMOVE does the right thing */ + /* coverity[use_after_free] */ struct input *first = TAILQ_FIRST(&inputs); log_debug("lldpctl", "process: %s", first->name); FILE *file = fopen(first->name, "r"); @@ -548,6 +550,8 @@ main(int argc, char *argv[]) end: while (!TAILQ_EMPTY(&inputs)) { + /* TAILQ_REMOVE does the right thing */ + /* coverity[use_after_free] */ struct input *first = TAILQ_FIRST(&inputs); TAILQ_REMOVE(&inputs, first, next); free(first->name); diff --git a/src/daemon/event.c b/src/daemon/event.c index fd7cf832..c05a3b3e 100644 --- a/src/daemon/event.c +++ b/src/daemon/event.c @@ -373,6 +373,8 @@ levent_ctl_accept(evutil_socket_t fd, short what, void *arg) client); bufferevent_enable(client->bev, EV_READ | EV_WRITE); log_debug("event", "new client accepted"); + /* s has been saved by bufferevent_socket_new */ + /* coverity[leaked_handle] */ return; accept_failed: levent_ctl_free_client(client); diff --git a/src/daemon/interfaces-linux.c b/src/daemon/interfaces-linux.c index 22e9c752..0064c823 100644 --- a/src/daemon/interfaces-linux.c +++ b/src/daemon/interfaces-linux.c @@ -807,6 +807,8 @@ interfaces_update(struct lldpd *cfg) } if (levent_iface_subscribe(cfg, s) == -1) close(s); + /* s has been saved by levent_iface_subscribe */ + /* coverity[leaked_handle] */ } end: diff --git a/src/daemon/lldpd.c b/src/daemon/lldpd.c index 849cdfc7..9cff3bfb 100644 --- a/src/daemon/lldpd.c +++ b/src/daemon/lldpd.c @@ -301,6 +301,8 @@ lldpd_reset_timer(struct lldpd *cfg) size_t output_len; char save[offsetof(struct lldpd_port, p_id_subtype)]; memcpy(save, port, sizeof(save)); + /* We intentionally partially memset port */ + /* coverity[suspicious_sizeof] */ memset(port, 0, sizeof(save)); output_len = lldpd_port_serialize(port, (void**)&output); memcpy(port, save, sizeof(save)); @@ -577,6 +579,8 @@ lldpd_decode(struct lldpd *cfg, char *frame, int s, freed with lldpd_port_cleanup() and therefore, the refcount of the chassis that was attached to it is decreased. */ + /* TAILQ_REMOVE does the right thing */ + /* coverity[use_after_free] */ i = 0; TAILQ_FOREACH(aport, &hardware->h_rports, p_entries) i++; log_debug("decode", "%d neighbors for %s", i, -- 2.39.5