]> git.decadent.org.uk Git - odhcp6c.git/commitdiff
Merge pull request #43 from bwhacks/security-fixes
authorSteven Barth <steven@midlink.org>
Fri, 29 Jan 2016 06:10:51 +0000 (07:10 +0100)
committerSteven Barth <steven@midlink.org>
Fri, 29 Jan 2016 06:10:51 +0000 (07:10 +0100)
Security/regression fixes

1  2 
src/script.c

diff --combined src/script.c
index 1533510dbab56c8d8394298ecf48c844b9255380,5955e940f075b9879609d3314377bfad0f7c0909..b20e94c9460c92ae45312bf48436ad73e0dd2d89
@@@ -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)) {
                                        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) {
                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);
  }