diff options
| author | Roy Marples <roy@marples.name> | 2014-02-27 20:00:39 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2014-02-27 20:00:39 +0000 |
| commit | 8fc52ced6f080d0bf25344e9b608fdd0f7ce4a93 (patch) | |
| tree | bd1b22cf8b289f4a910efe84f1f2e4ee81d66a27 /ipv6nd.c | |
| parent | 04a1918940bf29ae2c29535ad3b8c2396fe5c7aa (diff) | |
| download | dhcpcd-8fc52ced6f080d0bf25344e9b608fdd0f7ce4a93.tar.xz | |
Fix all errors reported by clang static analyser.
Diffstat (limited to 'ipv6nd.c')
| -rw-r--r-- | ipv6nd.c | 24 |
1 files changed, 18 insertions, 6 deletions
@@ -357,6 +357,8 @@ ipv6nd_sendrsprobe(void *arg) /* Set the outbound interface */ cm = CMSG_FIRSTHDR(&ctx->sndhdr); + if (cm == NULL) /* unlikely */ + return; cm->cmsg_level = IPPROTO_IPV6; cm->cmsg_type = IPV6_PKTINFO; cm->cmsg_len = CMSG_LEN(sizeof(pi)); @@ -366,6 +368,8 @@ ipv6nd_sendrsprobe(void *arg) /* Hop limit */ cm = CMSG_NXTHDR(&ctx->sndhdr, cm); + if (cm == NULL) /* unlikely */ + return; cm->cmsg_level = IPPROTO_IPV6; cm->cmsg_type = IPV6_HOPLIMIT; cm->cmsg_len = CMSG_LEN(sizeof(hoplimit)); @@ -750,9 +754,8 @@ ipv6nd_handlera(struct ipv6_ctx *ctx, struct interface *ifp, len -= sizeof(struct nd_router_advert); p = ((uint8_t *)icp) + sizeof(struct nd_router_advert); - olen = 0; lifetime = ~0U; - for (olen = 0; len > 0; p += olen, len -= olen) { + for (; len > 0; p += olen, len -= olen) { if ((size_t)len < sizeof(struct nd_opt_hdr)) { syslog(LOG_ERR, "%s: short option", ifp->name); break; @@ -1412,12 +1415,15 @@ ipv6nd_probeaddr(void *arg) //memcpy(&dst.sin6_addr, &ap->addr, sizeof(dst.sin6_addr)); dst.sin6_scope_id = ap->iface->index; - sndhdr.msg_name = (caddr_t)&dst; - sndhdr.msg_iov[0].iov_base = ap->ns; - sndhdr.msg_iov[0].iov_len = ap->nslen; + ctx = ap->iface->ctx->ipv6; + ctx->sndhdr.msg_name = (caddr_t)&dst; + ctx->sndhdr.msg_iov[0].iov_base = ap->ns; + ctx->sndhdr.msg_iov[0].iov_len = ap->nslen; /* Set the outbound interface */ - cm = CMSG_FIRSTHDR(&sndhdr); + cm = CMSG_FIRSTHDR(&ctx->sndhdr); + if (cm == NULL) /* unlikely */ + return; cm->cmsg_level = IPPROTO_IPV6; cm->cmsg_type = IPV6_PKTINFO; cm->cmsg_len = CMSG_LEN(sizeof(pi)); @@ -1427,6 +1433,8 @@ ipv6nd_probeaddr(void *arg) /* Hop limit */ cm = CMSG_NXTHDR(&sndhdr, cm); + if (cm == NULL) /* unlikely */ + return; cm->cmsg_level = IPPROTO_IPV6; cm->cmsg_type = IPV6_HOPLIMIT; cm->cmsg_len = CMSG_LEN(sizeof(hoplimit)); @@ -1568,6 +1576,8 @@ ipv6nd_proberouter(void *arg) /* Set the outbound interface */ cm = CMSG_FIRSTHDR(&ctx->sndhdr); + if (cm == NULL) /* unlikely */ + return; cm->cmsg_level = IPPROTO_IPV6; cm->cmsg_type = IPV6_PKTINFO; cm->cmsg_len = CMSG_LEN(sizeof(pi)); @@ -1577,6 +1587,8 @@ ipv6nd_proberouter(void *arg) /* Hop limit */ cm = CMSG_NXTHDR(&ctx->sndhdr, cm); + if (cm == NULL) /* unlikely */ + return; cm->cmsg_level = IPPROTO_IPV6; cm->cmsg_type = IPV6_HOPLIMIT; cm->cmsg_len = CMSG_LEN(sizeof(hoplimit)); |
