From: Roy Marples Date: Sat, 21 Oct 2017 13:10:02 +0000 (+0100) Subject: Make this more readable. X-Git-Tag: v7.0.0-rc4~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c73df368d18ba34ecca0b03380a72b6a89ac0c2;p=thirdparty%2Fdhcpcd.git Make this more readable. --- diff --git a/src/dhcp.c b/src/dhcp.c index 75bcddc7..270fd25e 100644 --- a/src/dhcp.c +++ b/src/dhcp.c @@ -1409,27 +1409,24 @@ dhcp_env(char **env, const char *prefix, continue; if (dhcp_getoverride(ifo, opt->option)) continue; - if ((p = get_option(ifp->ctx, bootp, bootp_len, - opt->option, &pl))) - { - ep += dhcp_envoption(ifp->ctx, ep, prefix, ifp->name, - opt, dhcp_getoption, p, pl); - if (opt->option == DHO_VIVSO && - pl > (int)sizeof(uint32_t)) - { - memcpy(&en, p, sizeof(en)); - en = ntohl(en); - vo = vivso_find(en, ifp); - if (vo) { - /* Skip over en + total size */ - p += sizeof(en) + 1; - pl -= sizeof(en) + 1; - ep += dhcp_envoption(ifp->ctx, - ep, prefix, ifp->name, - vo, dhcp_getoption, p, pl); - } - } - } + p = get_option(ifp->ctx, bootp, bootp_len, opt->option, &pl); + if (p == NULL) + continue; + ep += dhcp_envoption(ifp->ctx, ep, prefix, ifp->name, + opt, dhcp_getoption, p, pl); + + if (opt->option != DHO_VIVSO || pl <= (int)sizeof(uint32_t)) + continue; + memcpy(&en, p, sizeof(en)); + en = ntohl(en); + vo = vivso_find(en, ifp); + if (vo == NULL) + continue; + /* Skip over en + total size */ + p += sizeof(en) + 1; + pl -= sizeof(en) + 1; + ep += dhcp_envoption(ifp->ctx, ep, prefix, ifp->name, + vo, dhcp_getoption, p, pl); } for (i = 0, opt = ifo->dhcp_override; @@ -1438,10 +1435,11 @@ dhcp_env(char **env, const char *prefix, { if (has_option_mask(ifo->nomask, opt->option)) continue; - if ((p = get_option(ifp->ctx, bootp, bootp_len, - opt->option, &pl))) - ep += dhcp_envoption(ifp->ctx, ep, prefix, ifp->name, - opt, dhcp_getoption, p, pl); + p = get_option(ifp->ctx, bootp, bootp_len, opt->option, &pl); + if (p == NULL) + continue; + ep += dhcp_envoption(ifp->ctx, ep, prefix, ifp->name, + opt, dhcp_getoption, p, pl); } return ep - env;