From: Steven Barth Date: Fri, 29 Jan 2016 06:10:51 +0000 (+0100) Subject: Merge pull request #43 from bwhacks/security-fixes X-Git-Tag: debian/1.1+git20160131-1~6 X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=3609bab1361ed3f92e19f7309dd6e7fd64bc4083;hp=-c;p=odhcp6c.git Merge pull request #43 from bwhacks/security-fixes Security/regression fixes --- 3609bab1361ed3f92e19f7309dd6e7fd64bc4083 diff --combined src/script.c index 1533510,5955e94..b20e94c --- a/src/script.c +++ b/src/script.c @@@ -105,9 -105,7 +105,9 @@@ static void ipv6_to_env(const char *nam buf_len += strlen(&buf[buf_len]); buf[buf_len++] = ' '; } - buf[buf_len - 1] = '\0'; + if (buf[buf_len - 1] == ' ') + buf_len--; + buf[buf_len] = '\0'; putenv(buf); } @@@ -128,9 -126,7 +128,9 @@@ static void fqdn_to_env(const char *nam buf_len += strlen(&buf[buf_len]); buf[buf_len++] = ' '; } - buf[buf_len - 1] = '\0'; + if (buf[buf_len - 1] == ' ') + buf_len--; + buf[buf_len] = '\0'; putenv(buf); } @@@ -173,7 -169,7 +173,7 @@@ static void entry_to_env(const char *na buf_len += strlen(&buf[buf_len]); if (type != ENTRY_HOST) { snprintf(&buf[buf_len], 6, "/%"PRIu16, e[i].length); - buf += strlen(&buf[buf_len]); + buf_len += strlen(&buf[buf_len]); if (type == ENTRY_ROUTE) { buf[buf_len++] = ','; if (!IN6_IS_ADDR_UNSPECIFIED(&e[i].router)) { @@@ -181,15 -177,15 +181,15 @@@ buf_len += strlen(&buf[buf_len]); } snprintf(&buf[buf_len], 23, ",%u,%u", e[i].valid, e[i].priority); - buf += strlen(&buf[buf_len]); + buf_len += strlen(&buf[buf_len]); } else { snprintf(&buf[buf_len], 23, ",%u,%u", e[i].preferred, e[i].valid); - buf += strlen(&buf[buf_len]); + buf_len += strlen(&buf[buf_len]); } if (type == ENTRY_PREFIX && ntohl(e[i].iaid) != 1) { snprintf(&buf[buf_len], 16, ",class=%08x", ntohl(e[i].iaid)); - buf += strlen(&buf[buf_len]); + buf_len += strlen(&buf[buf_len]); } if (type == ENTRY_PREFIX && e[i].priority) { @@@ -205,9 -201,7 +205,9 @@@ buf[buf_len++] = ' '; } - buf[buf_len - 1] = '\0'; + if (buf[buf_len - 1] == ' ') + buf_len--; + buf[buf_len] = '\0'; putenv(buf); } @@@ -226,9 -220,7 +226,9 @@@ static void search_to_env(const char *n *c++ = ' '; } - c[-1] = '\0'; + if (c[-1] == ' ') + c--; + *c = '\0'; putenv(buf); }