From 7c604492735809a6571623645a0b2d1f37e12d40 Mon Sep 17 00:00:00 2001
From: Steven Barth <steven@midlink.org>
Date: Tue, 14 Apr 2015 08:24:44 +0200
Subject: [PATCH] scan-code fixes

---
 src/dhcpv6.c | 260 +++++++++++++++++++++++++--------------------------
 src/md5.c    |   2 +-
 src/script.c |   3 +-
 3 files changed, 132 insertions(+), 133 deletions(-)

diff --git a/src/dhcpv6.c b/src/dhcpv6.c
index eeb669b..bc403b9 100644
--- a/src/dhcpv6.c
+++ b/src/dhcpv6.c
@@ -934,153 +934,153 @@ static int dhcpv6_handle_reply(enum dhcpv6_msg orig, _unused const int rc,
 		odhcp6c_clear_state(STATE_S46_MAPE);
 		odhcp6c_clear_state(STATE_S46_LW);
 		odhcp6c_clear_state(STATE_PASSTHRU);
-	}
 
-	// Parse and find all matching IAs
-	dhcpv6_for_each_option(opt, end, otype, olen, odata) {
-		bool passthru = true;
+		// Parse and find all matching IAs
+		dhcpv6_for_each_option(opt, end, otype, olen, odata) {
+			bool passthru = true;
 
-		if ((otype == DHCPV6_OPT_IA_PD || otype == DHCPV6_OPT_IA_NA)
-				&& olen > -4 + sizeof(struct dhcpv6_ia_hdr)) {
-			struct dhcpv6_ia_hdr *ia_hdr = (void*)(&odata[-4]);
+			if ((otype == DHCPV6_OPT_IA_PD || otype == DHCPV6_OPT_IA_NA)
+					&& olen > -4 + sizeof(struct dhcpv6_ia_hdr)) {
+				struct dhcpv6_ia_hdr *ia_hdr = (void*)(&odata[-4]);
 
-			if ((na_mode == IA_MODE_NONE && otype == DHCPV6_OPT_IA_NA) ||
-			    (pd_mode == IA_MODE_NONE && otype == DHCPV6_OPT_IA_PD))
-				continue;
+				if ((na_mode == IA_MODE_NONE && otype == DHCPV6_OPT_IA_NA) ||
+					(pd_mode == IA_MODE_NONE && otype == DHCPV6_OPT_IA_PD))
+					continue;
 
-			// Test ID
-			if (ia_hdr->iaid != htonl(1) && otype == DHCPV6_OPT_IA_NA)
-				continue;
+				// Test ID
+				if (ia_hdr->iaid != htonl(1) && otype == DHCPV6_OPT_IA_NA)
+					continue;
 
-			uint16_t code = DHCPV6_Success;
-			uint16_t stype, slen;
-			uint8_t *sdata;
-			// Get and handle status code
-			dhcpv6_for_each_option(&ia_hdr[1], odata + olen,
-					stype, slen, sdata) {
-				if (stype == DHCPV6_OPT_STATUS && slen >= 2) {
-					uint8_t *mdata = (slen > 2) ? &sdata[2] : NULL;
-					uint16_t mlen = (slen > 2) ? slen - 2 : 0;
+				uint16_t code = DHCPV6_Success;
+				uint16_t stype, slen;
+				uint8_t *sdata;
+				// Get and handle status code
+				dhcpv6_for_each_option(&ia_hdr[1], odata + olen,
+						stype, slen, sdata) {
+					if (stype == DHCPV6_OPT_STATUS && slen >= 2) {
+						uint8_t *mdata = (slen > 2) ? &sdata[2] : NULL;
+						uint16_t mlen = (slen > 2) ? slen - 2 : 0;
 
-					code = ((int)sdata[0]) << 8 | ((int)sdata[1]);
+						code = ((int)sdata[0]) << 8 | ((int)sdata[1]);
 
-					if (code == DHCPV6_Success)
-						continue;
+						if (code == DHCPV6_Success)
+							continue;
 
-					dhcpv6_handle_ia_status_code(orig, ia_hdr,
-						code, mdata, mlen, handled_status_codes, &ret);
+						dhcpv6_handle_ia_status_code(orig, ia_hdr,
+							code, mdata, mlen, handled_status_codes, &ret);
 
 
-					if (ret > 0)
-						return ret;
-					break;
+						if (ret > 0)
+							return ret;
+						break;
+					}
 				}
-			}
 
-			if (code != DHCPV6_Success)
-				continue;
+				if (code != DHCPV6_Success)
+					continue;
 
-			dhcpv6_parse_ia(ia_hdr, odata + olen + sizeof(*ia_hdr));
-			passthru = false;
-		} else if (otype == DHCPV6_OPT_STATUS && olen >= 2) {
-			uint8_t *mdata = (olen > 2) ? &odata[2] : NULL;
-			uint16_t mlen = (olen > 2) ? olen - 2 : 0;
-			uint16_t code = ((int)odata[0]) << 8 | ((int)odata[1]);
+				dhcpv6_parse_ia(ia_hdr, odata + olen + sizeof(*ia_hdr));
+				passthru = false;
+			} else if (otype == DHCPV6_OPT_STATUS && olen >= 2) {
+				uint8_t *mdata = (olen > 2) ? &odata[2] : NULL;
+				uint16_t mlen = (olen > 2) ? olen - 2 : 0;
+				uint16_t code = ((int)odata[0]) << 8 | ((int)odata[1]);
 
-			dhcpv6_handle_status_code(orig, code, mdata, mlen, &ret);
-			passthru = false;
-		}
-		else if (otype == DHCPV6_OPT_DNS_SERVERS) {
-			if (olen % 16 == 0)
-				odhcp6c_add_state(STATE_DNS, odata, olen);
-		} else if (otype == DHCPV6_OPT_DNS_DOMAIN) {
-			odhcp6c_add_state(STATE_SEARCH, odata, olen);
-		} else if (otype == DHCPV6_OPT_SNTP_SERVERS) {
-			if (olen % 16 == 0)
-				odhcp6c_add_state(STATE_SNTP_IP, odata, olen);
-		} else if (otype == DHCPV6_OPT_NTP_SERVER) {
-			uint16_t stype, slen;
-			uint8_t *sdata;
-			// Test status and bail if error
-			dhcpv6_for_each_option(odata, odata + olen,
-					stype, slen, sdata) {
-				if (slen == 16 && (stype == NTP_MC_ADDR ||
-						stype == NTP_SRV_ADDR))
-					odhcp6c_add_state(STATE_NTP_IP,
-							sdata, slen);
-				else if (slen > 0 && stype == NTP_SRV_FQDN)
-					odhcp6c_add_state(STATE_NTP_FQDN,
-							sdata, slen);
+				dhcpv6_handle_status_code(orig, code, mdata, mlen, &ret);
+				passthru = false;
 			}
-		} else if (otype == DHCPV6_OPT_SIP_SERVER_A) {
-			if (olen == 16)
-				odhcp6c_add_state(STATE_SIP_IP, odata, olen);
-		} else if (otype == DHCPV6_OPT_SIP_SERVER_D) {
-			odhcp6c_add_state(STATE_SIP_FQDN, odata, olen);
-		} else if (otype == DHCPV6_OPT_INFO_REFRESH && olen >= 4) {
-			refresh = ntohl(*((uint32_t*)odata));
-			passthru = false;
-		} else if (otype == DHCPV6_OPT_AUTH) {
-			if (olen == -4 + sizeof(struct dhcpv6_auth_reconfigure)) {
-				struct dhcpv6_auth_reconfigure *r = (void*)&odata[-4];
-				if (r->protocol == 3 && r->algorithm == 1 &&
-						r->reconf_type == 1)
-					memcpy(reconf_key, r->key, sizeof(r->key));
+			else if (otype == DHCPV6_OPT_DNS_SERVERS) {
+				if (olen % 16 == 0)
+					odhcp6c_add_state(STATE_DNS, odata, olen);
+			} else if (otype == DHCPV6_OPT_DNS_DOMAIN) {
+				odhcp6c_add_state(STATE_SEARCH, odata, olen);
+			} else if (otype == DHCPV6_OPT_SNTP_SERVERS) {
+				if (olen % 16 == 0)
+					odhcp6c_add_state(STATE_SNTP_IP, odata, olen);
+			} else if (otype == DHCPV6_OPT_NTP_SERVER) {
+				uint16_t stype, slen;
+				uint8_t *sdata;
+				// Test status and bail if error
+				dhcpv6_for_each_option(odata, odata + olen,
+						stype, slen, sdata) {
+					if (slen == 16 && (stype == NTP_MC_ADDR ||
+							stype == NTP_SRV_ADDR))
+						odhcp6c_add_state(STATE_NTP_IP,
+								sdata, slen);
+					else if (slen > 0 && stype == NTP_SRV_FQDN)
+						odhcp6c_add_state(STATE_NTP_FQDN,
+								sdata, slen);
+				}
+			} else if (otype == DHCPV6_OPT_SIP_SERVER_A) {
+				if (olen == 16)
+					odhcp6c_add_state(STATE_SIP_IP, odata, olen);
+			} else if (otype == DHCPV6_OPT_SIP_SERVER_D) {
+				odhcp6c_add_state(STATE_SIP_FQDN, odata, olen);
+			} else if (otype == DHCPV6_OPT_INFO_REFRESH && olen >= 4) {
+				refresh = ntohl(*((uint32_t*)odata));
+				passthru = false;
+			} else if (otype == DHCPV6_OPT_AUTH) {
+				if (olen == -4 + sizeof(struct dhcpv6_auth_reconfigure)) {
+					struct dhcpv6_auth_reconfigure *r = (void*)&odata[-4];
+					if (r->protocol == 3 && r->algorithm == 1 &&
+							r->reconf_type == 1)
+						memcpy(reconf_key, r->key, sizeof(r->key));
+				}
+				passthru = false;
+			} else if (otype == DHCPV6_OPT_AFTR_NAME && olen > 3) {
+				size_t cur_len;
+				odhcp6c_get_state(STATE_AFTR_NAME, &cur_len);
+				if (cur_len == 0)
+					odhcp6c_add_state(STATE_AFTR_NAME, odata, olen);
+				passthru = false;
+			} else if (otype == DHCPV6_OPT_SOL_MAX_RT && olen == 4) {
+				uint32_t sol_max_rt = ntohl(*((uint32_t *)odata));
+				if (sol_max_rt >= DHCPV6_SOL_MAX_RT_MIN &&
+						sol_max_rt <= DHCPV6_SOL_MAX_RT_MAX)
+					dhcpv6_retx[DHCPV6_MSG_SOLICIT].max_timeo = sol_max_rt;
+				passthru = false;
+			} else if (otype == DHCPV6_OPT_INF_MAX_RT && olen == 4) {
+				uint32_t inf_max_rt = ntohl(*((uint32_t *)odata));
+				if (inf_max_rt >= DHCPV6_INF_MAX_RT_MIN &&
+						inf_max_rt <= DHCPV6_INF_MAX_RT_MAX)
+					dhcpv6_retx[DHCPV6_MSG_INFO_REQ].max_timeo = inf_max_rt;
+				passthru = false;
+	#ifdef EXT_CER_ID
+			} else if (otype == DHCPV6_OPT_CER_ID && olen == -4 +
+					sizeof(struct dhcpv6_cer_id)) {
+				struct dhcpv6_cer_id *cer_id = (void*)&odata[-4];
+				struct in6_addr any = IN6ADDR_ANY_INIT;
+				if (memcmp(&cer_id->addr, &any, sizeof(any)))
+					odhcp6c_add_state(STATE_CER, &cer_id->addr, sizeof(any));
+				passthru = false;
+	#endif
+			} else if (otype == DHCPV6_OPT_S46_CONT_MAPT) {
+				odhcp6c_add_state(STATE_S46_MAPT, odata, olen);
+				passthru = false;
+			} else if (otype == DHCPV6_OPT_S46_CONT_MAPE) {
+				size_t mape_len;
+				odhcp6c_get_state(STATE_S46_MAPE, &mape_len);
+				if (mape_len == 0)
+					odhcp6c_add_state(STATE_S46_MAPE, odata, olen);
+				passthru = false;
+			} else if (otype == DHCPV6_OPT_S46_CONT_LW) {
+				odhcp6c_add_state(STATE_S46_LW, odata, olen);
+				passthru = false;
+			} else if (otype == DHCPV6_OPT_CLIENTID ||
+					otype == DHCPV6_OPT_SERVERID ||
+					otype == DHCPV6_OPT_IA_TA ||
+					otype == DHCPV6_OPT_PREF ||
+					otype == DHCPV6_OPT_UNICAST ||
+					otype == DHCPV6_OPT_FQDN ||
+					otype == DHCPV6_OPT_RECONF_ACCEPT) {
+				passthru = false;
+			} else {
+				odhcp6c_add_state(STATE_CUSTOM_OPTS, &odata[-4], olen + 4);
 			}
-			passthru = false;
-		} else if (otype == DHCPV6_OPT_AFTR_NAME && olen > 3) {
-			size_t cur_len;
-			odhcp6c_get_state(STATE_AFTR_NAME, &cur_len);
-			if (cur_len == 0)
-				odhcp6c_add_state(STATE_AFTR_NAME, odata, olen);
-			passthru = false;
-		} else if (otype == DHCPV6_OPT_SOL_MAX_RT && olen == 4) {
-			uint32_t sol_max_rt = ntohl(*((uint32_t *)odata));
-			if (sol_max_rt >= DHCPV6_SOL_MAX_RT_MIN &&
-					sol_max_rt <= DHCPV6_SOL_MAX_RT_MAX)
-				dhcpv6_retx[DHCPV6_MSG_SOLICIT].max_timeo = sol_max_rt;
-			passthru = false;
-		} else if (otype == DHCPV6_OPT_INF_MAX_RT && olen == 4) {
-			uint32_t inf_max_rt = ntohl(*((uint32_t *)odata));
-			if (inf_max_rt >= DHCPV6_INF_MAX_RT_MIN &&
-					inf_max_rt <= DHCPV6_INF_MAX_RT_MAX)
-				dhcpv6_retx[DHCPV6_MSG_INFO_REQ].max_timeo = inf_max_rt;
-			passthru = false;
-#ifdef EXT_CER_ID
-		} else if (otype == DHCPV6_OPT_CER_ID && olen == -4 +
-				sizeof(struct dhcpv6_cer_id)) {
-			struct dhcpv6_cer_id *cer_id = (void*)&odata[-4];
-			struct in6_addr any = IN6ADDR_ANY_INIT;
-			if (memcmp(&cer_id->addr, &any, sizeof(any)))
-				odhcp6c_add_state(STATE_CER, &cer_id->addr, sizeof(any));
-			passthru = false;
-#endif
-		} else if (otype == DHCPV6_OPT_S46_CONT_MAPT) {
-			odhcp6c_add_state(STATE_S46_MAPT, odata, olen);
-			passthru = false;
-		} else if (otype == DHCPV6_OPT_S46_CONT_MAPE) {
-			size_t mape_len;
-			odhcp6c_get_state(STATE_S46_MAPE, &mape_len);
-			if (mape_len == 0)
-				odhcp6c_add_state(STATE_S46_MAPE, odata, olen);
-			passthru = false;
-		} else if (otype == DHCPV6_OPT_S46_CONT_LW) {
-			odhcp6c_add_state(STATE_S46_LW, odata, olen);
-			passthru = false;
-		} else if (otype == DHCPV6_OPT_CLIENTID ||
-				otype == DHCPV6_OPT_SERVERID ||
-				otype == DHCPV6_OPT_IA_TA ||
-				otype == DHCPV6_OPT_PREF ||
-				otype == DHCPV6_OPT_UNICAST ||
-				otype == DHCPV6_OPT_FQDN ||
-				otype == DHCPV6_OPT_RECONF_ACCEPT) {
-			passthru = false;
-		} else {
-			odhcp6c_add_state(STATE_CUSTOM_OPTS, &odata[-4], olen + 4);
-		}
 
-		if (passthru)
-			odhcp6c_add_state(STATE_PASSTHRU, &odata[-4], olen + 4);
+			if (passthru)
+				odhcp6c_add_state(STATE_PASSTHRU, &odata[-4], olen + 4);
+		}
 	}
 
 	if (orig != DHCPV6_MSG_INFO_REQ) {
diff --git a/src/md5.c b/src/md5.c
index 63256a7..881fe16 100644
--- a/src/md5.c
+++ b/src/md5.c
@@ -109,7 +109,7 @@ static void md5_hash_block(const void *buffer, md5_ctx_t *ctx)
 	for (i = 0; i < 16; i++) {
 		cwp[i] = SWAP_LE32(words[i]);
 	}
-	words += 16;
+	//words += 16;
 
 	pc = C_array;
 	pp = P_array;
diff --git a/src/script.c b/src/script.c
index 30441b9..db227d9 100644
--- a/src/script.c
+++ b/src/script.c
@@ -247,7 +247,6 @@ static void s46_to_env(enum odhcp6c_state state, const uint8_t *data, size_t len
 	uint16_t otype, olen;
 	dhcpv6_for_each_option(data, &data[len], otype, olen, odata) {
 		struct dhcpv6_s46_rule *rule = (struct dhcpv6_s46_rule*)odata;
-		struct dhcpv6_s46_dmr *dmr = (struct dhcpv6_s46_dmr*)odata;
 		struct dhcpv6_s46_v4v6bind *bind = (struct dhcpv6_s46_v4v6bind*)odata;
 
 		if (state != STATE_S46_LW && otype == DHCPV6_OPT_S46_RULE &&
@@ -283,7 +282,7 @@ static void s46_to_env(enum odhcp6c_state state, const uint8_t *data, size_t len
 					fprintf(fp, "br=%s,", buf6);
 				} else if (state == STATE_S46_MAPT && otype == DHCPV6_OPT_S46_DMR &&
 						olen >= sizeof(struct dhcpv6_s46_dmr)) {
-					dmr = (struct dhcpv6_s46_dmr*)odata;
+					struct dhcpv6_s46_dmr *dmr = (struct dhcpv6_s46_dmr*)odata;
 					memset(&in6, 0, sizeof(in6));
 					size_t prefix6len = dmr->dmr_prefix6_len;
 					prefix6len = (prefix6len % 8 == 0) ? prefix6len / 8 : prefix6len / 8 + 1;
-- 
2.39.5