diff options
-rw-r--r-- | epan/dissectors/packet-tls-utils.c | 4 | ||||
-rw-r--r-- | epan/dissectors/packet-wireguard.c | 4 | ||||
-rw-r--r-- | wsutil/filesystem.c | 6 | ||||
-rw-r--r-- | wsutil/filesystem.h | 3 |
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, ¤t_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 |