fix potential memory corruption

(Logical change 1.136)
This commit is contained in:
osdl.net!shemminger 2005-02-07 18:15:04 +00:00
parent b209eda990
commit fb9b1d0f6a
4 changed files with 11 additions and 5 deletions

View File

@ -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

View 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);

View 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);

View 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);