aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-tls-utils.c4
-rw-r--r--epan/dissectors/packet-wireguard.c4
-rw-r--r--wsutil/filesystem.c6
-rw-r--r--wsutil/filesystem.h3
4 files changed, 8 insertions, 9 deletions
diff --git a/epan/dissectors/packet-tls-utils.c b/epan/dissectors/packet-tls-utils.c
index c28f043940..51414993c9 100644
--- a/epan/dissectors/packet-tls-utils.c
+++ b/epan/dissectors/packet-tls-utils.c
@@ -5342,8 +5342,8 @@ ssl_load_keyfile(const gchar *tls_keylog_filename, FILE **keylog_file,
ssl_debug_printf("trying to use TLS keylog in %s\n", tls_keylog_filename);
- /* if the keylog file was deleted, re-open it */
- if (*keylog_file && file_needs_reopen(*keylog_file, tls_keylog_filename)) {
+ /* if the keylog file was deleted/overwritten, re-open it */
+ if (*keylog_file && file_needs_reopen(ws_fileno(*keylog_file), tls_keylog_filename)) {
ssl_debug_printf("%s file got deleted, trying to re-open\n", G_STRFUNC);
fclose(*keylog_file);
*keylog_file = NULL;
diff --git a/epan/dissectors/packet-wireguard.c b/epan/dissectors/packet-wireguard.c
index 51e71b5ec3..0de68eac26 100644
--- a/epan/dissectors/packet-wireguard.c
+++ b/epan/dissectors/packet-wireguard.c
@@ -640,8 +640,8 @@ wg_keylog_read(void)
return;
}
- // Reopen file if it got deleted.
- if (wg_keylog_file && file_needs_reopen(wg_keylog_file, pref_keylog_file)) {
+ // Reopen file if it got deleted/overwritten.
+ if (wg_keylog_file && file_needs_reopen(ws_fileno(wg_keylog_file), pref_keylog_file)) {
g_debug("Key log file got changed or deleted, trying to re-open.");
wg_keylog_reset();
}
diff --git a/wsutil/filesystem.c b/wsutil/filesystem.c
index 8c60b41e8c..f850ecb784 100644
--- a/wsutil/filesystem.c
+++ b/wsutil/filesystem.c
@@ -2124,7 +2124,7 @@ files_identical(const char *fname1, const char *fname2)
}
gboolean
-file_needs_reopen(FILE* fp, const char* filename)
+file_needs_reopen(int fd, const char* filename)
{
#ifdef _WIN32
/* Windows handles st_dev in a way unsuitable here:
@@ -2139,7 +2139,7 @@ file_needs_reopen(FILE* fp, const char* filename)
* Thus instead of using fstat(), use Windows specific API.
*/
- HANDLE open_handle = (HANDLE)_get_osfhandle(ws_fileno(fp));
+ HANDLE open_handle = (HANDLE)_get_osfhandle(fd);
HANDLE current_handle = CreateFile(utf_8to16(filename), FILE_READ_ATTRIBUTES,
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL);
@@ -2177,7 +2177,7 @@ file_needs_reopen(FILE* fp, const char* filename)
/* consider a file deleted when stat fails for either file,
* or when the residing device / inode has changed. */
- if (0 != ws_fstat64(ws_fileno(fp), &open_stat))
+ if (0 != ws_fstat64(fd, &open_stat))
return TRUE;
if (0 != ws_stat64(filename, &current_stat))
return TRUE;
diff --git a/wsutil/filesystem.h b/wsutil/filesystem.h
index 690c4a138a..b204fe5932 100644
--- a/wsutil/filesystem.h
+++ b/wsutil/filesystem.h
@@ -11,7 +11,6 @@
#ifndef FILESYSTEM_H
#define FILESYSTEM_H
-#include <stdio.h>
#include "ws_symbol_export.h"
#include "ws_attributes.h"
@@ -306,7 +305,7 @@ WS_DLL_PUBLIC gboolean files_identical(const char *fname1, const char *fname2);
/*
* Check if file has been recreated since it was opened.
*/
-WS_DLL_PUBLIC gboolean file_needs_reopen(FILE* fp, const char* filename);
+WS_DLL_PUBLIC gboolean file_needs_reopen(int fd, const char* filename);
/*
* Copy a file in binary mode, for those operating systems that care about