diff options
author | Donald Sharp <donaldsharp72@gmail.com> | 2023-09-21 12:31:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-21 12:31:58 +0200 |
commit | cd3bd19314ac86c25a7831f995947fae67c6706d (patch) | |
tree | c5b67cd6b3b62a8bea736777a026024b3805e561 | |
parent | Merge pull request #14455 from fdumontet6WIND/fix_coverity_as_path (diff) | |
parent | lib: random make-coverity-happy nits (diff) | |
download | frr-cd3bd19314ac86c25a7831f995947fae67c6706d.tar.xz frr-cd3bd19314ac86c25a7831f995947fae67c6706d.zip |
Merge pull request #14454 from opensourcerouting/coverity-20230920
lib: fix a bunch of coverity nits
-rw-r--r-- | lib/elf_py.c | 4 | ||||
-rw-r--r-- | lib/event.c | 7 | ||||
-rw-r--r-- | lib/ipaddr.h | 1 | ||||
-rw-r--r-- | lib/northbound.c | 4 | ||||
-rw-r--r-- | lib/prefix.c | 2 | ||||
-rw-r--r-- | lib/printf/printfcommon.h | 2 | ||||
-rw-r--r-- | lib/sha256.c | 2 | ||||
-rw-r--r-- | lib/vty.c | 7 | ||||
-rw-r--r-- | lib/zlog_5424.c | 20 |
9 files changed, 32 insertions, 17 deletions
diff --git a/lib/elf_py.c b/lib/elf_py.c index 81ca668e7..643495d8c 100644 --- a/lib/elf_py.c +++ b/lib/elf_py.c @@ -1089,7 +1089,9 @@ static void elffile_add_dynreloc(struct elffile *w, Elf_Data *reldata, symidx = relw->symidx = GELF_R_SYM(rela->r_info); sym = relw->sym = gelf_getsym(symdata, symidx, &relw->_sym); if (sym) { - relw->symname = elfdata_strptr(strdata, sym->st_name); + if (strdata) + relw->symname = elfdata_strptr(strdata, + sym->st_name); relw->symvalid = GELF_ST_TYPE(sym->st_info) != STT_NOTYPE; relw->unresolved = sym->st_shndx == SHN_UNDEF; diff --git a/lib/event.c b/lib/event.c index 37a30d251..458e29f24 100644 --- a/lib/event.c +++ b/lib/event.c @@ -791,7 +791,12 @@ static struct event *thread_get(struct event_loop *m, uint8_t type, thread->master = m; thread->arg = arg; thread->yield = EVENT_YIELD_TIME_SLOT; /* default */ - thread->ref = NULL; + /* thread->ref is zeroed either by XCALLOC above or by memset before + * being put on the "unuse" list by thread_add_unuse(). + * Setting it here again makes coverity complain about a missing + * lock :( + */ + /* thread->ref = NULL; */ thread->ignore_timer_late = false; /* diff --git a/lib/ipaddr.h b/lib/ipaddr.h index e3ad14d7d..c86e38c86 100644 --- a/lib/ipaddr.h +++ b/lib/ipaddr.h @@ -28,6 +28,7 @@ struct ipaddr { enum ipaddr_type_t ipa_type; union { uint8_t addr; + uint8_t addrbytes[16]; struct in_addr _v4_addr; struct in6_addr _v6_addr; } ip; diff --git a/lib/northbound.c b/lib/northbound.c index ef2344ee1..69b96d365 100644 --- a/lib/northbound.c +++ b/lib/northbound.c @@ -2691,7 +2691,6 @@ void nb_init(struct event_loop *tm, size_t nmodules, bool db_enabled) { struct yang_module *loaded[nmodules], **loadedp = loaded; - bool explicit_compile; /* * Currently using this explicit compile feature in libyang2 leads to @@ -2699,8 +2698,9 @@ void nb_init(struct event_loop *tm, * of modules until they have all been loaded into the context. This * avoids multiple recompiles of the same modules as they are * imported/augmented etc. + * (Done as a #define to make coverity happy) */ - explicit_compile = false; +#define explicit_compile false nb_db_enabled = db_enabled; diff --git a/lib/prefix.c b/lib/prefix.c index 0b8664411..f342c4c1d 100644 --- a/lib/prefix.c +++ b/lib/prefix.c @@ -261,7 +261,7 @@ int evpn_type5_prefix_match(const struct prefix *n, const struct prefix *p) return 0; prefixlen = evp->prefix.prefix_addr.ip_prefix_length; - np = &evp->prefix.prefix_addr.ip.ip.addr; + np = evp->prefix.prefix_addr.ip.ip.addrbytes; /* If n's prefix is longer than p's one return 0. */ if (prefixlen > p->prefixlen) diff --git a/lib/printf/printfcommon.h b/lib/printf/printfcommon.h index b3a7ca0c1..f777be880 100644 --- a/lib/printf/printfcommon.h +++ b/lib/printf/printfcommon.h @@ -68,7 +68,7 @@ io_print(struct io_state *iop, const CHAR * __restrict ptr, size_t len) { size_t copylen = len; - if (!iop->cb) + if (!iop->cb || !len) return 0; if (iop->avail < copylen) copylen = iop->avail; diff --git a/lib/sha256.c b/lib/sha256.c index ccf260fa7..08e08eb06 100644 --- a/lib/sha256.c +++ b/lib/sha256.c @@ -344,7 +344,7 @@ void HMAC__SHA256_Final(unsigned char digest[32], HMAC_SHA256_CTX *ctx) void PBKDF2_SHA256(const uint8_t *passwd, size_t passwdlen, const uint8_t *salt, size_t saltlen, uint64_t c, uint8_t *buf, size_t dkLen) { - HMAC_SHA256_CTX PShctx, hctx; + HMAC_SHA256_CTX PShctx = {}, hctx; size_t i; uint8_t ivec[4]; uint8_t U[32]; @@ -2368,8 +2368,7 @@ static void vtysh_read(struct event *thread) printf("result: %d\n", ret); printf("vtysh node: %d\n", vty->node); #endif /* VTYSH_DEBUG */ - - if (vty->pass_fd != -1) { + if (vty->pass_fd >= 0) { memset(vty->pass_fd_status, 0, 4); vty->pass_fd_status[3] = ret; vty->status = VTY_PASSFD; @@ -2387,7 +2386,9 @@ static void vtysh_read(struct event *thread) * => skip vty_event(VTYSH_READ, vty)! */ return; - } + } else + /* normalize other invalid values */ + vty->pass_fd = -1; /* hack for asynchronous "write integrated" * - other commands in "buf" will be ditched diff --git a/lib/zlog_5424.c b/lib/zlog_5424.c index c15bdece2..9bc1c819a 100644 --- a/lib/zlog_5424.c +++ b/lib/zlog_5424.c @@ -877,10 +877,15 @@ static int zlog_5424_open(struct zlog_cfg_5424 *zcf, int sock_type) switch (zcf->dst) { case ZLOG_5424_DST_NONE: - break; + return -1; case ZLOG_5424_DST_FD: fd = dup(zcf->fd); + if (fd < 0) { + flog_err_sys(EC_LIB_SYSTEM_CALL, + "failed to dup() log file descriptor: %m (FD limit too low?)"); + return -1; + } optlen = sizeof(sock_type); if (!getsockopt(fd, SOL_SOCKET, SO_TYPE, &sock_type, &optlen)) { @@ -891,7 +896,7 @@ static int zlog_5424_open(struct zlog_cfg_5424 *zcf, int sock_type) case ZLOG_5424_DST_FIFO: if (!zcf->filename) - break; + return -1; if (!zcf->file_nocreate) { frr_with_privs (lib_privs) { @@ -904,7 +909,7 @@ static int zlog_5424_open(struct zlog_cfg_5424 *zcf, int sock_type) if (err == 0) do_chown = true; else if (errno != EEXIST) - break; + return -1; } flags = O_NONBLOCK; @@ -912,7 +917,7 @@ static int zlog_5424_open(struct zlog_cfg_5424 *zcf, int sock_type) case ZLOG_5424_DST_FILE: if (!zcf->filename) - break; + return -1; frr_with_privs (lib_privs) { fd = open(zcf->filename, flags | O_WRONLY | O_APPEND | @@ -924,7 +929,7 @@ static int zlog_5424_open(struct zlog_cfg_5424 *zcf, int sock_type) flog_err_sys(EC_LIB_SYSTEM_CALL, "could not open log file %pSE: %m", zcf->filename); - break; + return -1; } frr_with_privs (lib_privs) { @@ -952,11 +957,11 @@ static int zlog_5424_open(struct zlog_cfg_5424 *zcf, int sock_type) flog_err_sys(EC_LIB_SYSTEM_CALL, "could not open or create log file %pSE: %m", zcf->filename); - break; + return -1; case ZLOG_5424_DST_UNIX: if (!zcf->filename) - break; + return -1; memset(&sa, 0, sizeof(sa)); sa.sun_family = AF_UNIX; @@ -988,6 +993,7 @@ static int zlog_5424_open(struct zlog_cfg_5424 *zcf, int sock_type) "could not connect to log unix path %pSE: %m", zcf->filename); need_reconnect = true; + /* no return -1 here, trigger retry code below */ } else { /* datagram sockets are connectionless, restarting * the receiver may lose some packets but will resume |