From 7c604492735809a6571623645a0b2d1f37e12d40 Mon Sep 17 00:00:00 2001 From: Steven Barth 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.2