From: Roy Marples Date: Mon, 29 Sep 2014 09:03:12 +0000 (+0000) Subject: Don't use a magic number for print_string flags. X-Git-Tag: v6.5.0~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3ba3de8e77feeacfdf84658b17a19c32d1c53d7e;p=thirdparty%2Fdhcpcd.git Don't use a magic number for print_string flags. Export if_ssid= for non carrier reasons. --- diff --git a/dhcp-common.c b/dhcp-common.c index e9acea0b..3e356c9d 100644 --- a/dhcp-common.c +++ b/dhcp-common.c @@ -330,7 +330,7 @@ print_string(char *s, size_t len, int flags, const uint8_t *data, size_t dl) if (p == e) break; } - if (flags) + if (flags & PS_SHELL) ve = svis(v, c, VIS_CSTYLE | VIS_OCTAL, data <= e ? *data : 0, ESCAPE_CHARS ESCAPE_EXTRA); else @@ -431,7 +431,7 @@ print_option(char *s, size_t len, int type, const uint8_t *data, size_t dl, if (tmp == NULL) return -1; decode_rfc3397(tmp, l, data, dl); - sl = print_string(s, len, 1, (uint8_t *)tmp, l - 1); + sl = print_string(s, len, PS_SHELL, (uint8_t *)tmp, l - 1); free(tmp); return sl; } @@ -441,7 +441,7 @@ print_option(char *s, size_t len, int type, const uint8_t *data, size_t dl, if ((tmp = decode_rfc3361(data, dl)) == NULL) return -1; l = strlen(tmp); - sl = print_string(s, len, 1, (uint8_t *)tmp, l); + sl = print_string(s, len, PS_SHELL, (uint8_t *)tmp, l); free(tmp); return sl; } @@ -457,7 +457,7 @@ print_option(char *s, size_t len, int type, const uint8_t *data, size_t dl, /* Some DHCP servers return NULL strings */ if (*data == '\0') return 0; - return print_string(s, len, 1, data, dl); + return print_string(s, len, PS_SHELL, data, dl); } if (type & FLAG) { diff --git a/dhcp-common.h b/dhcp-common.h index 4b0e0feb..a2ac7f0d 100644 --- a/dhcp-common.h +++ b/dhcp-common.h @@ -62,6 +62,9 @@ #define INDEX (1 << 19) #define OPTION (1 << 20) +/* Print string flags */ +#define PS_SHELL (1 << 0) + struct dhcp_opt { uint32_t option; /* Also used for IANA Enterpise Number */ int type; diff --git a/dhcp.c b/dhcp.c index a124289d..00fd2c3c 100644 --- a/dhcp.c +++ b/dhcp.c @@ -1269,12 +1269,12 @@ dhcp_env(char **env, const char *prefix, const struct dhcp_message *dhcp, } if (*dhcp->bootfile && !(overl & 1)) { - print_string(safe, sizeof(safe), 1, + print_string(safe, sizeof(safe), PS_SHELL, dhcp->bootfile, sizeof(dhcp->bootfile)); setvar(&ep, prefix, "filename", safe); } if (*dhcp->servername && !(overl & 2)) { - print_string(safe, sizeof(safe), 1, + print_string(safe, sizeof(safe), PS_SHELL, dhcp->servername, sizeof(dhcp->servername)); setvar(&ep, prefix, "server_name", safe); } diff --git a/ipv6nd.c b/ipv6nd.c index fbe85275..57f9b1d4 100644 --- a/ipv6nd.c +++ b/ipv6nd.c @@ -1010,11 +1010,11 @@ ipv6nd_handlera(struct ipv6_ctx *ctx, struct interface *ifp, if (tmp) { decode_rfc3397(tmp, l, op, n); l -= 1; - n = (size_t)print_string(NULL, 0, 1, - (const uint8_t *)tmp, l); + n = (size_t)print_string(NULL, 0, + PS_SHELL, (const uint8_t *)tmp, l); opt = malloc(n); if (opt) - print_string(opt, n, 1, + print_string(opt, n, PS_SHELL, (const uint8_t *)tmp, l); else syslog(LOG_ERR, "%s: %m", diff --git a/script.c b/script.c index 42ffd92c..f5637e44 100644 --- a/script.c +++ b/script.c @@ -375,27 +375,26 @@ make_env(const struct interface *ifp, const char *reason, char ***argv) } if (ifp->wireless) { const char *pfx; + size_t pfx_len; + ssize_t psl; if (strcmp(reason, "CARRIER") == 0) pfx = "new_ssid="; else if (strcmp(reason, "NOCARRIER") == 0) pfx = "old_ssid="; - else - pfx = NULL; - if (pfx) { - size_t pfx_len; - ssize_t psl; - - pfx_len = strlen(pfx); - psl = print_string(NULL, 0, 1, + else + pfx = "if_ssid="; + + pfx_len = strlen(pfx); + psl = print_string(NULL, 0, PS_SHELL, + (const uint8_t *)ifp->ssid, ifp->ssid_len); + if (psl != -1) { + EMALLOC(elen, pfx_len + (size_t)psl + 1); + memcpy(env[elen], pfx, pfx_len); + print_string(env[elen] + pfx_len, (size_t)psl, + PS_SHELL, (const uint8_t *)ifp->ssid, ifp->ssid_len); - if (psl != -1) { - EMALLOC(elen, pfx_len + (size_t)psl + 1); - memcpy(env[elen], pfx, pfx_len); - print_string(env[elen] + pfx_len, (size_t)psl, 1, - (const uint8_t *)ifp->ssid, ifp->ssid_len); - elen++; - } + elen++; } } #ifdef INET