mirror of
https://github.com/libressl/portable.git
synced 2026-01-17 21:51:17 +01:00
tests/compat/pipe2.c: Add create_issue_1069_sentinels() and call it from socketpair() to gain evidence whether issue #1069 is fixed
This commit is contained in:
@@ -35,6 +35,22 @@ static int setfl(int fd, int flag)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
* Have open() temporarily use up file descriptors until reaching beyond the
|
||||
* allocated sockets, then leak the ones conflicting with any of the latter.
|
||||
*/
|
||||
static void create_issue_1069_sentinels(int socket_vector[2])
|
||||
{
|
||||
int fd = open("CONIN$", O_RDONLY);
|
||||
if (fd == -1 || fd > socket_vector[0] && fd > socket_vector[1]) {
|
||||
return;
|
||||
}
|
||||
create_issue_1069_sentinels(socket_vector);
|
||||
if (fd != socket_vector[0] && fd != socket_vector[1]) {
|
||||
close(fd);
|
||||
}
|
||||
}
|
||||
|
||||
int socketpair(int domain, int type, int protocol, int socket_vector[2])
|
||||
{
|
||||
if (domain != AF_UNIX || !(type & SOCK_STREAM) || protocol != PF_UNSPEC)
|
||||
@@ -85,6 +101,9 @@ int socketpair(int domain, int type, int protocol, int socket_vector[2])
|
||||
goto err;
|
||||
|
||||
closesocket(listener);
|
||||
|
||||
create_issue_1069_sentinels(socket_vector);
|
||||
|
||||
return 0;
|
||||
|
||||
err:
|
||||
|
||||
Reference in New Issue
Block a user