mirror of
https://github.com/rofl0r/proxychains-ng
synced 2025-01-04 19:22:52 +08:00
Merge 9d6e4c27b7
into 1760c93474
This commit is contained in:
commit
9155523d72
3
configure
vendored
3
configure
vendored
@ -223,9 +223,6 @@ check_define __FreeBSD__ && bsd_detected=true
|
|||||||
check_define __OpenBSD__ && {
|
check_define __OpenBSD__ && {
|
||||||
bsd_detected=true
|
bsd_detected=true
|
||||||
echo "CFLAGS+=-DIS_OPENBSD">>config.mak
|
echo "CFLAGS+=-DIS_OPENBSD">>config.mak
|
||||||
check_compile_run 'whether OpenBSDs fclose() (illegally) calls close()' \
|
|
||||||
'#include <stdio.h>\n#include<stdlib.h>\nint close(int x){exit(0);}int main(){fclose(stdin);return 1;}' && \
|
|
||||||
OUR_CPPFLAGS="$OUR_CPPFLAGS -DBROKEN_FCLOSE"
|
|
||||||
}
|
}
|
||||||
check_define __sun && check_define __SVR4 && solaris_detected=true
|
check_define __sun && check_define __SVR4 && solaris_detected=true
|
||||||
check_define __HAIKU__ && haiku_detected=true
|
check_define __HAIKU__ && haiku_detected=true
|
||||||
|
@ -115,7 +115,7 @@ typedef struct {
|
|||||||
unsigned int first, last, flags;
|
unsigned int first, last, flags;
|
||||||
} close_range_args_t;
|
} close_range_args_t;
|
||||||
|
|
||||||
/* If there is some `close` or `close_range` system call before do_init,
|
/* If there is some `close` or `close_range` system call before do_init,
|
||||||
we buffer it, and actually execute them in do_init. */
|
we buffer it, and actually execute them in do_init. */
|
||||||
static int close_fds[16];
|
static int close_fds[16];
|
||||||
static int close_fds_cnt = 0;
|
static int close_fds_cnt = 0;
|
||||||
@ -560,9 +560,7 @@ inv_host:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifndef BROKEN_FCLOSE
|
|
||||||
fclose(file);
|
fclose(file);
|
||||||
#endif
|
|
||||||
if(!count) {
|
if(!count) {
|
||||||
fprintf(stderr, "error: no valid proxy found in config\n");
|
fprintf(stderr, "error: no valid proxy found in config\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
@ -639,7 +637,7 @@ HOOKFUNC(int, close_range, unsigned first, unsigned last, int flags) {
|
|||||||
int protected_fds[] = {req_pipefd[0], req_pipefd[1], resp_pipefd[0], resp_pipefd[1]};
|
int protected_fds[] = {req_pipefd[0], req_pipefd[1], resp_pipefd[0], resp_pipefd[1]};
|
||||||
intsort(protected_fds, 4);
|
intsort(protected_fds, 4);
|
||||||
/* We are skipping protected_fds while calling true_close_range()
|
/* We are skipping protected_fds while calling true_close_range()
|
||||||
* If protected_fds cut the range into some sub-ranges, we close sub-ranges BEFORE cut point in the loop.
|
* If protected_fds cut the range into some sub-ranges, we close sub-ranges BEFORE cut point in the loop.
|
||||||
* [first, cut1-1] , [cut1+1, cut2-1] , [cut2+1, cut3-1]
|
* [first, cut1-1] , [cut1+1, cut2-1] , [cut2+1, cut3-1]
|
||||||
* Finally, we delete the remaining sub-range, outside the loop. [cut3+1, tail]
|
* Finally, we delete the remaining sub-range, outside the loop. [cut3+1, tail]
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user