mirror of
https://github.com/rofl0r/proxychains-ng
synced 2025-01-08 06:02:51 +08:00
hostsreader: use temporary vars for string manipulation
working directly with the passed variables could lead to bugs when some lines in the hosts file aren't well-formed and the loop is taken several times while the buf vars are already modified.
This commit is contained in:
parent
4fb7eb0532
commit
25ee4c318d
@ -29,26 +29,28 @@ int hostsreader_get(struct hostsreader *ctx, char* buf, size_t bufsize) {
|
||||
while(1) {
|
||||
if(!fgets(buf, bufsize, ctx->f)) return 0;
|
||||
if(*buf == '#') continue;
|
||||
ctx->ip = buf;
|
||||
while(*buf && !isspace(*buf) && bufsize) {
|
||||
buf++;
|
||||
bufsize--;
|
||||
char *p = buf;
|
||||
size_t l = bufsize;
|
||||
ctx->ip = p;
|
||||
while(*p && !isspace(*p) && l) {
|
||||
p++;
|
||||
l--;
|
||||
}
|
||||
if(!bufsize || !*buf || buf == ctx->ip) continue;
|
||||
*buf = 0;
|
||||
buf++;
|
||||
while(*buf && isspace(*buf) && bufsize) {
|
||||
buf++;
|
||||
bufsize--;
|
||||
if(!l || !*p || p == ctx->ip) continue;
|
||||
*p = 0;
|
||||
p++;
|
||||
while(*p && isspace(*p) && l) {
|
||||
p++;
|
||||
l--;
|
||||
}
|
||||
if(!bufsize || !*buf) continue;
|
||||
if(!l || !*p) continue;
|
||||
ctx->name = buf;
|
||||
while(*buf && !isspace(*buf) && bufsize) {
|
||||
buf++;
|
||||
bufsize--;
|
||||
while(*p && !isspace(*p) && l) {
|
||||
p++;
|
||||
l--;
|
||||
}
|
||||
if(!bufsize || !*buf) continue;
|
||||
*buf = 0;
|
||||
if(!l || !*p) continue;
|
||||
*p = 0;
|
||||
if(isnumericipv4(ctx->ip)) return 1;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user