Compare commits

...

3 Commits

Author SHA1 Message Date
e2ff0ad273
libc: Propagate errors correctly in shadow functions
All checks were successful
Build and test / build (push) Successful in 2m58s
2024-04-18 21:25:36 +02:00
62cb53069c
libc: Close all pipe file descriptors in popen() after dup2() is called 2024-04-18 21:25:13 +02:00
fe302f5967
libc: Clean up stdio.h a bit 2024-04-18 21:24:34 +02:00
3 changed files with 6 additions and 4 deletions

View File

@ -56,7 +56,7 @@ extern "C"
#endif
/* Flush a stream's buffers. */
int fflush(FILE*);
int fflush(FILE* stream);
/* Open a file and bind a stream to it. */
FILE* fopen(const char* path, const char* mode);
@ -67,7 +67,7 @@ extern "C"
/* Change the underlying file and mode of a stream. */
FILE* freopen(const char* path, const char* mode, FILE* stream);
/* Close a file and frees up its stream. */
/* Close a file and free up its stream. */
int fclose(FILE* stream);
/* Return the file descriptor associated with a stream. */

View File

@ -16,7 +16,7 @@ extern "C"
{
struct spwd* result;
getspent_r(&spwd, s_buf, sizeof(s_buf), &result);
if (getspent_r(&spwd, s_buf, sizeof(s_buf), &result) < 0) return nullptr;
return result;
}
@ -28,7 +28,7 @@ extern "C"
if (!f)
{
f = fopen("/etc/shadow", "r");
if (!f) return 0;
if (!f) return -1;
fcntl(fileno(f), F_SETFD, FD_CLOEXEC);
}

View File

@ -793,11 +793,13 @@ extern "C"
{
close(pfds[0]);
dup2(pfds[1], STDOUT_FILENO);
close(pfds[1]);
}
else
{
close(pfds[1]);
dup2(pfds[0], STDIN_FILENO);
close(pfds[0]);
}
execl("/bin/sh", "sh", "-c", command, nullptr);