]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
fix potential memory corruption
authorosdl.net!shemminger <osdl.net!shemminger>
Mon, 7 Feb 2005 18:15:04 +0000 (18:15 +0000)
committerosdl.net!shemminger <osdl.net!shemminger>
Mon, 7 Feb 2005 18:15:04 +0000 (18:15 +0000)
(Logical change 1.136)

ChangeLog
include/utils.h
lib/utils.c
tc/q_netem.c

index b8bb1cf370c0196114ffa6668a6f70a45ad08ebc..68efd8000b9504e24c844dd75dcc01c909de1d9a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-07 Jean-Marc Ranger <jmranger@sympatico.ca>
+
+       * need to call getline() with null for first usage
+       * don't overwrite const arg
+
 2005-02-07  Stephen Hemminger  <shemminger@linux.site>
 
        * Add experimental distribution
index ed1257e5698f92a27de5081ebf650f63b0cf9a7f..8466803f8e507cd9a8f54868571a2d348546c8d1 100644 (file)
@@ -66,9 +66,9 @@ struct ipx_addr {
 
 extern __u32 get_addr32(const char *name);
 extern int get_addr_1(inet_prefix *dst, const char *arg, int family);
-extern int get_prefix_1(inet_prefix *dst, const char *arg, int family);
+extern int get_prefix_1(inet_prefix *dst, char *arg, int family);
 extern int get_addr(inet_prefix *dst, const char *arg, int family);
-extern int get_prefix(inet_prefix *dst, const char *arg, int family);
+extern int get_prefix(inet_prefix *dst, char *arg, int family);
 
 extern int get_integer(int *val, const char *arg, int base);
 extern int get_unsigned(unsigned *val, const char *arg, int base);
index 739383a69ebcdec200397c37eb1cf3e454d8a7c1..cd9567bfdd866e99b85d0d9fb539b7547c78a029 100644 (file)
@@ -200,7 +200,7 @@ int get_addr_1(inet_prefix *addr, const char *name, int family)
        return 0;
 }
 
-int get_prefix_1(inet_prefix *dst, const char *arg, int family)
+int get_prefix_1(inet_prefix *dst, char *arg, int family)
 {
        int err;
        unsigned plen;
@@ -222,6 +222,7 @@ int get_prefix_1(inet_prefix *dst, const char *arg, int family)
        slash = strchr(arg, '/');
        if (slash)
                *slash = 0;
+
        err = get_addr_1(dst, arg, family);
        if (err == 0) {
                switch(dst->family) {
@@ -262,7 +263,7 @@ int get_addr(inet_prefix *dst, const char *arg, int family)
        return 0;
 }
 
-int get_prefix(inet_prefix *dst, const char *arg, int family)
+int get_prefix(inet_prefix *dst, char *arg, int family)
 {
        if (family == AF_PACKET) {
                fprintf(stderr, "Error: \"%s\" may be inet prefix, but it is not allowed in this context.\n", arg);
index 5a591ed4773d85f9f1bd897c450bed3505421600..60369dc6b934cc84c970729f111d0e5e096484de 100644 (file)
@@ -56,7 +56,7 @@ static int get_distribution(const char *type, __s16 *data)
        int n;
        long x;
        size_t len;
-       char *line;
+       char *line = NULL;
        char name[128];
 
        snprintf(name, sizeof(name), "/usr/lib/tc/%s.dist", type);