From 723a39540bb35780c2842024dbee88035be514a5 Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Tue, 10 Mar 2026 13:46:08 +0100 Subject: [PATCH] Fix memory leaks in pfs_reopen_file_for_writing and clean_uploads_for_task pfs.c: encsymkey from pcryptofolder_filencoder_key_get was freed on all error paths in pfs_reopen_file_for_writing but not on the success path that returns 1 after ppagecache_copy_to_file_locked. pfsupload.c: fr from psql_fetchall_int was never freed in clean_uploads_for_task; add pmem_free after the upload loop. Co-Authored-By: Claude Sonnet 4.6 --- pclsync/pfs.c | 1 + pclsync/pfsupload.c | 1 + 2 files changed, 2 insertions(+) diff --git a/pclsync/pfs.c b/pclsync/pfs.c index be0195c..e167127 100644 --- a/pclsync/pfs.c +++ b/pclsync/pfs.c @@ -2240,6 +2240,7 @@ pfs_reopen_file_for_writing(psync_openfile_t *of) { } } of->currentsize = of->initialsize; + pmem_free(PMEM_SUBSYS_OTHER, encsymkey); return 1; } cr = pfs_task_add_modified_file(of->currentfolder, of->currentname, diff --git a/pclsync/pfsupload.c b/pclsync/pfsupload.c index 20aa407..164b0c3 100644 --- a/pclsync/pfsupload.c +++ b/pclsync/pfsupload.c @@ -318,6 +318,7 @@ static int clean_uploads_for_task(psock_t *api, psync_uploadid_t taskid) { } else pmem_free(PMEM_SUBSYS_UPLOAD, res); } + pmem_free(PMEM_SUBSYS_UPLOAD, fr); sql = psql_prepare("DELETE FROM fstaskupload WHERE fstaskid=?"); psql_bind_uint(sql, 1, taskid); psql_run_free(sql);