summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas2025-11-28 07:32:10 +0000
committerÁlvaro Fernández Rojas2025-11-28 07:32:10 +0000
commita170d63874f279d4bf48995a19285d7c7e7ad361 (patch)
treeb869a1b7481982c60696b80c03a1542c49225325
parent7336992e68663ea2779cd3c9d9e67e76aed80fcd (diff)
downloadodhcpd-a170d63874f279d4bf48995a19285d7c7e7ad361.tar.gz
src: fix shadowed local variables
Fix shadowed local variables and enable warning to prevent more shadowed variables in the future. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
-rw-r--r--CMakeLists.txt2
-rw-r--r--src/config.c12
-rw-r--r--src/dhcpv4.c32
-rw-r--r--src/dhcpv6-ia.c4
-rw-r--r--src/dhcpv6.c18
-rw-r--r--src/dhcpv6.h12
-rw-r--r--src/router.c8
7 files changed, 48 insertions, 40 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 703d6b1..06b9af4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,8 +31,10 @@ target_compile_options(${PROJECT_NAME} PRIVATE -Wformat)
target_compile_options(${PROJECT_NAME} PRIVATE -Werror=format-security)
target_compile_options(${PROJECT_NAME} PRIVATE -Werror=format-nonliteral)
target_compile_options(${PROJECT_NAME} PRIVATE -Wimplicit-fallthrough=5)
+target_compile_options(${PROJECT_NAME} PRIVATE -Wno-shadow=compatible-local)
target_compile_options(${PROJECT_NAME} PRIVATE -Wno-unused-parameter)
target_compile_options(${PROJECT_NAME} PRIVATE -Wmissing-declarations)
+target_compile_options(${PROJECT_NAME} PRIVATE -Wshadow=local)
# Libraries
diff --git a/src/config.c b/src/config.c
index ec110b5..f5773dc 100644
--- a/src/config.c
+++ b/src/config.c
@@ -1387,7 +1387,7 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr
uint8_t buf[DNS_MAX_NAME_LEN];
char *domain;
size_t domainlen;
- int len;
+ int ds_len;
uint8_t *tmp;
if (blobmsg_type(cur) != BLOBMSG_TYPE_STRING || !blobmsg_check_attr(cur, false))
@@ -1399,20 +1399,20 @@ int config_parse_interface(void *data, size_t len, const char *name, bool overwr
if (domainlen > 0 && domain[domainlen - 1] == '.')
domain[domainlen - 1] = 0;
- len = dn_comp(domain, buf, sizeof(buf), NULL, NULL);
- if (len <= 0) {
+ ds_len = dn_comp(domain, buf, sizeof(buf), NULL, NULL);
+ if (ds_len <= 0) {
error("Invalid %s value configured for interface '%s'",
iface_attrs[IFACE_ATTR_DNS_DOMAIN_SEARCH].name, iface->name);
continue;
}
- tmp = realloc(iface->dns_search, iface->dns_search_len + len);
+ tmp = realloc(iface->dns_search, iface->dns_search_len + ds_len);
if (!tmp)
goto err;
iface->dns_search = tmp;
- memcpy(&iface->dns_search[iface->dns_search_len], buf, len);
- iface->dns_search_len += len;
+ memcpy(&iface->dns_search[iface->dns_search_len], buf, ds_len);
+ iface->dns_search_len += ds_len;
}
}
diff --git a/src/dhcpv4.c b/src/dhcpv4.c
index 17c34ba..5afeb91 100644
--- a/src/dhcpv4.c
+++ b/src/dhcpv4.c
@@ -1095,9 +1095,9 @@ void dhcpv4_handle_msg(void *src_addr, void *data, size_t len,
/* Note: each option might get called more than once */
for (size_t i = 0; i < sizeof(std_opts) + req_opts_len; i++) {
- uint8_t opt = i < sizeof(std_opts) ? std_opts[i] : req_opts[i - sizeof(std_opts)];
+ uint8_t r_opt = i < sizeof(std_opts) ? std_opts[i] : req_opts[i - sizeof(std_opts)];
- switch (opt) {
+ switch (r_opt) {
case DHCPV4_OPT_NETMASK:
if (!lease)
break;
@@ -1216,20 +1216,20 @@ void dhcpv4_handle_msg(void *src_addr, void *data, size_t len,
iov[IOV_SRCH_DOMAIN_NAME].iov_base = iface->dns_search;
iov[IOV_SRCH_DOMAIN_NAME].iov_len = iface->dns_search_len;
} else if (!res_init() && _res.dnsrch[0] && _res.dnsrch[0][0]) {
- int len;
+ int dds_len;
if (!iov[IOV_SRCH_DOMAIN_NAME].iov_base)
iov[IOV_SRCH_DOMAIN_NAME].iov_base = alloca(DNS_MAX_NAME_LEN);
- len = dn_comp(_res.dnsrch[0],
+ dds_len = dn_comp(_res.dnsrch[0],
iov[IOV_SRCH_DOMAIN_NAME].iov_base,
DNS_MAX_NAME_LEN, NULL, NULL);
- if (len < 0)
+ if (dds_len < 0)
break;
- reply_srch_domain.len = len;
+ reply_srch_domain.len = dds_len;
iov[IOV_SRCH_DOMAIN].iov_len = sizeof(reply_srch_domain);
- iov[IOV_SRCH_DOMAIN_NAME].iov_len = len;
+ iov[IOV_SRCH_DOMAIN_NAME].iov_len = dds_len;
}
break;
@@ -1247,8 +1247,8 @@ void dhcpv4_handle_msg(void *src_addr, void *data, size_t len,
if (!lease || reply_dnr.len > 0)
break;
- for (size_t i = 0; i < iface->dnr_cnt; i++) {
- struct dnr_options *dnr = &iface->dnr[i];
+ for (size_t j = 0; j < iface->dnr_cnt; j++) {
+ struct dnr_options *dnr = &iface->dnr[j];
if (dnr->addr4_cnt == 0 && dnr->addr6_cnt > 0)
continue;
@@ -1269,8 +1269,8 @@ void dhcpv4_handle_msg(void *src_addr, void *data, size_t len,
dnrs = alloca(dnrs_len);
uint8_t *pos = (uint8_t *)dnrs;
- for (size_t i = 0; i < iface->dnr_cnt; i++) {
- struct dnr_options *dnr = &iface->dnr[i];
+ for (size_t j = 0; j < iface->dnr_cnt; j++) {
+ struct dnr_options *dnr = &iface->dnr[j];
struct dhcpv4_dnr *d4dnr = (struct dhcpv4_dnr *)pos;
uint16_t d4dnr_len = sizeof(uint16_t) + sizeof(uint8_t) + dnr->adn_len;
uint16_t d4dnr_priority_be = htons(dnr->priority);
@@ -1319,13 +1319,13 @@ void dhcpv4_handle_msg(void *src_addr, void *data, size_t len,
break;
uint8_t *buf = alloca(2 + uri_len);
- struct dhcpv4_option *opt = (struct dhcpv4_option *)buf;
+ struct dhcpv4_option *cp_opt = (struct dhcpv4_option *)buf;
- opt->code = DHCPV4_OPT_CAPTIVE_PORTAL;
- opt->len = uri_len;
- memcpy(opt->data, iface->captive_portal_uri, uri_len);
+ cp_opt->code = DHCPV4_OPT_CAPTIVE_PORTAL;
+ cp_opt->len = uri_len;
+ memcpy(cp_opt->data, iface->captive_portal_uri, uri_len);
- iov[IOV_CAPTIVE_PORTAL].iov_base = opt;
+ iov[IOV_CAPTIVE_PORTAL].iov_base = cp_opt;
iov[IOV_CAPTIVE_PORTAL].iov_len = 2 + uri_len;
break;
}
diff --git a/src/dhcpv6-ia.c b/src/dhcpv6-ia.c
index 87b124b..ca3f89d 100644
--- a/src/dhcpv6-ia.c
+++ b/src/dhcpv6-ia.c
@@ -1002,7 +1002,7 @@ ssize_t dhcpv6_ia_handle_IAs(uint8_t *buf, size_t buflen, struct interface *ifac
if (is_pd) {
uint8_t *sdata;
uint16_t stype, slen;
- dhcpv6_for_each_option(&ia[1], odata + olen, stype, slen, sdata) {
+ dhcpv6_for_each_sub_option(&ia[1], odata + olen, stype, slen, sdata) {
if (stype != DHCPV6_OPT_IA_PREFIX || slen < sizeof(struct dhcpv6_ia_prefix) - 4)
continue;
@@ -1045,7 +1045,7 @@ ssize_t dhcpv6_ia_handle_IAs(uint8_t *buf, size_t buflen, struct interface *ifac
} else if (is_na) {
uint8_t *sdata;
uint16_t stype, slen;
- dhcpv6_for_each_option(&ia[1], odata + olen, stype, slen, sdata) {
+ dhcpv6_for_each_sub_option(&ia[1], odata + olen, stype, slen, sdata) {
if (stype != DHCPV6_OPT_IA_ADDR || slen < sizeof(struct dhcpv6_ia_addr) - 4)
continue;
diff --git a/src/dhcpv6.c b/src/dhcpv6.c
index 06b7f59..03537fd 100644
--- a/src/dhcpv6.c
+++ b/src/dhcpv6.c
@@ -553,8 +553,8 @@ static void handle_client_request(void *addr, void *data, size_t len,
break;
case DHCPV6_OPT_DNR:
- for (size_t i = 0; i < iface->dnr_cnt; i++) {
- struct dnr_options *dnr = &iface->dnr[i];
+ for (size_t j = 0; j < iface->dnr_cnt; j++) {
+ struct dnr_options *dnr = &iface->dnr[j];
if (dnr->addr6_cnt == 0 && dnr->addr4_cnt > 0)
continue;
@@ -572,8 +572,8 @@ static void handle_client_request(void *addr, void *data, size_t len,
dnrs = alloca(dnrs_len);
uint8_t *pos = (uint8_t *)dnrs;
- for (size_t i = 0; i < iface->dnr_cnt; i++) {
- struct dnr_options *dnr = &iface->dnr[i];
+ for (size_t j = 0; j < iface->dnr_cnt; j++) {
+ struct dnr_options *dnr = &iface->dnr[j];
struct dhcpv6_dnr *d6dnr = (struct dhcpv6_dnr *)pos;
uint16_t d6dnr_type_be = htons(DHCPV6_OPT_DNR);
uint16_t d6dnr_len = 2 * sizeof(uint16_t) + dnr->adn_len;
@@ -620,11 +620,11 @@ static void handle_client_request(void *addr, void *data, size_t len,
size_t dns_search_len = iface->dns_search_len;
if (!dns_search && !res_init() && _res.dnsrch[0] && _res.dnsrch[0][0]) {
- int len = dn_comp(_res.dnsrch[0], dns_search_buf,
+ int ds_len = dn_comp(_res.dnsrch[0], dns_search_buf,
sizeof(dns_search_buf), NULL, NULL);
- if (len > 0) {
+ if (ds_len > 0) {
dns_search = dns_search_buf;
- dns_search_len = len;
+ dns_search_len = ds_len;
}
}
@@ -874,10 +874,10 @@ static void relay_server_response(uint8_t *data, size_t len)
if (payload_data[0] == DHCPV6_MSG_RELAY_REPL) {
target.sin6_port = htons(DHCPV6_SERVER_PORT);
} else { /* Go through the payload data */
- struct dhcpv6_client_header *h = (void*)payload_data;
+ struct dhcpv6_client_header *dch = (void*)payload_data;
end = payload_data + payload_len;
- dhcpv6_for_each_option(&h[1], end, otype, olen, odata) {
+ dhcpv6_for_each_option(&dch[1], end, otype, olen, odata) {
if (otype == DHCPV6_OPT_DNS_SERVERS && olen >= sizeof(struct in6_addr)) {
dns_addrs6 = (struct in6_addr*)odata;
dns_addrs6_cnt = olen / sizeof(struct in6_addr);
diff --git a/src/dhcpv6.h b/src/dhcpv6.h
index 0a7628c..63301ac 100644
--- a/src/dhcpv6.h
+++ b/src/dhcpv6.h
@@ -167,10 +167,16 @@ struct dhcpv6_cer_id {
struct in6_addr addr;
};
-#define dhcpv6_for_each_option(start, end, otype, olen, odata)\
- for (uint8_t *_o = (uint8_t*)(start); _o + 4 <= (end) &&\
- ((otype) = _o[0] << 8 | _o[1]) && ((odata) = (void*)&_o[4]) &&\
+#define dhcpv6_for_each_option(start, end, otype, olen, odata) \
+ for (uint8_t *_o = (uint8_t*)(start); _o + 4 <= (end) && \
+ ((otype) = _o[0] << 8 | _o[1]) && ((odata) = (void*)&_o[4]) && \
((olen) = _o[2] << 8 | _o[3]) + (odata) <= (end); \
_o += 4 + (_o[2] << 8 | _o[3]))
+#define dhcpv6_for_each_sub_option(start, end, otype, olen, odata) \
+ for (uint8_t *_so = (uint8_t*)(start); _so + 4 <= (end) && \
+ ((otype) = _so[0] << 8 | _so[1]) && ((odata) = (void*)&_so[4]) && \
+ ((olen) = _so[2] << 8 | _so[3]) + (odata) <= (end); \
+ _so += 4 + (_so[2] << 8 | _so[3]))
+
#endif /* _DHCPV6_H_ */
diff --git a/src/router.c b/src/router.c
index b882e01..4fe8ccf 100644
--- a/src/router.c
+++ b/src/router.c
@@ -699,11 +699,11 @@ static int send_router_advert(struct interface *iface, const struct in6_addr *fr
continue; /* PIO filtered out of this RA */
}
- for (size_t i = 0; i < pfxs_cnt; ++i) {
- if (addr->prefix_len == pfxs[i].nd_opt_pi_prefix_len &&
- !odhcpd_bmemcmp(&pfxs[i].nd_opt_pi_prefix,
+ for (size_t j = 0; j < pfxs_cnt; ++j) {
+ if (addr->prefix_len == pfxs[j].nd_opt_pi_prefix_len &&
+ !odhcpd_bmemcmp(&pfxs[j].nd_opt_pi_prefix,
&addr->addr.in6, addr->prefix_len))
- p = &pfxs[i];
+ p = &pfxs[j];
}
if (!p) {