summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/bug304754
-rw-r--r--src/feature/hs/hs_service.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/changes/bug30475 b/changes/bug30475
new file mode 100644
index 0000000000..839597b885
--- /dev/null
+++ b/changes/bug30475
@@ -0,0 +1,4 @@
+ o Minor bugfixes ():
+ - Avoid a GCC 9.1.1 warning (and possible crash depending on libc
+ implemenation) when failing to load a hidden service client authorization
+ file. Fixes bug 30475; bugfix on 0.3.5.1-alpha.
diff --git a/src/feature/hs/hs_service.c b/src/feature/hs/hs_service.c
index 828ca1da45..4029290364 100644
--- a/src/feature/hs/hs_service.c
+++ b/src/feature/hs/hs_service.c
@@ -1259,16 +1259,16 @@ load_client_keys(hs_service_t *service)
client_key_file_path = hs_path_from_filename(client_keys_dir_path,
filename);
client_key_str = read_file_to_str(client_key_file_path, 0, NULL);
- /* Free immediately after using it. */
- tor_free(client_key_file_path);
/* If we cannot read the file, continue with the next file. */
if (!client_key_str) {
log_warn(LD_REND, "Client authorization file %s can't be read. "
"Corrupted or verify permission? Ignoring.",
client_key_file_path);
+ tor_free(client_key_file_path);
continue;
}
+ tor_free(client_key_file_path);
client = parse_authorized_client(client_key_str);
/* Wipe and free immediately after using it. */