Commit 6e34e7dc authored by Denys Fedoryshchenko's avatar Denys Fedoryshchenko Committed by Stephen Hemminger

Fix tc/m_ipt memory leaks

1)optind according iptables sources have to be set to 0. If it is set to 1, in
batch it will mess up things. Also in iptables sources i notice that ->tflags
and ->used need to be reset.

2)Since target->t = fw_calloc(1, size); allocated memory in function build_st,
it have to be freed at the end, or in batch we will have memory leak. TODO:
Probably it must be freed in all "return -1" cases in parse_ipt after
build_st. About this i am not sure, up to Stephen.

3)new_name was malloc'ed, but not freed
parent 037d950b
......@@ -277,6 +277,8 @@ get_target_name(const char *name)
if (!handle) {
fputs(dlerror(), stderr);
printf("\n");
free(l_name);
free(new_name);
return NULL;
}
}
......@@ -292,12 +294,16 @@ get_target_name(const char *name)
fputs(error, stderr);
fprintf(stderr, "\n");
dlclose(handle);
free(l_name);
free(new_name);
return NULL;
}
}
}
}
free(l_name);
free(new_name);
return m;
}
......@@ -512,8 +518,15 @@ static int parse_ipt(struct action_util *a,int *argc_p,
*argc_p = rargc - iargc;
*argv_p = argv;
optind = 1;
optind = 0;
free_opts(opts);
/* Clear flags if target will be used again */
m->tflags=0;
m->used=0;
/* Free allocated memory */
if (m->t)
free(m->t);
return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment