Skip to content

Commit

Permalink
tests/compat/pipe2.c: Add create_issue_1069_sentinels() and call it f…
Browse files Browse the repository at this point in the history
…rom socketpair() to gain evidence whether issue libressl#1069 is fixed
  • Loading branch information
datadiode committed Jul 19, 2024
1 parent c8ca894 commit 6f7da78
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions tests/compat/pipe2.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 6f7da78

Please sign in to comment.