mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
swrap: Wrap fopen to detect stale file descriptors.
Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
This commit is contained in:
parent
f8584abfef
commit
9731516e7f
@ -337,6 +337,7 @@ struct swrap_libc_fns {
|
||||
socklen_t addrlen);
|
||||
int (*libc_dup)(int fd);
|
||||
int (*libc_dup2)(int oldfd, int newfd);
|
||||
FILE *(*libc_fopen)(const char *name, const char *mode);
|
||||
#ifdef HAVE_EVENTFD
|
||||
int (*libc_eventfd)(int count, int flags);
|
||||
#endif
|
||||
@ -645,6 +646,13 @@ static int libc_listen(int sockfd, int backlog)
|
||||
return swrap.fns.libc_listen(sockfd, backlog);
|
||||
}
|
||||
|
||||
static FILE *libc_fopen(const char *name, const char *mode)
|
||||
{
|
||||
swrap_load_lib_function(SWRAP_LIBC, fopen);
|
||||
|
||||
return swrap.fns.libc_fopen(name, mode);
|
||||
}
|
||||
|
||||
static int libc_vopen(const char *pathname, int flags, va_list ap)
|
||||
{
|
||||
long int mode = 0;
|
||||
@ -3065,6 +3073,29 @@ int listen(int s, int backlog)
|
||||
return swrap_listen(s, backlog);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* FOPEN
|
||||
***************************************************************************/
|
||||
|
||||
static FILE *swrap_fopen(const char *name, const char *mode)
|
||||
{
|
||||
FILE *fp;
|
||||
|
||||
fp = libc_fopen(name, mode);
|
||||
if (fp != NULL) {
|
||||
int fd = fileno(fp);
|
||||
|
||||
swrap_remove_stale(fd);
|
||||
}
|
||||
|
||||
return fp;
|
||||
}
|
||||
|
||||
FILE *fopen(const char *name, const char *mode)
|
||||
{
|
||||
return swrap_fopen(name, mode);
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* OPEN
|
||||
***************************************************************************/
|
||||
|
Loading…
x
Reference in New Issue
Block a user