From c5fc92aea465340881cf27df06bf41b8c33694e6 Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Tue, 3 Mar 2026 12:32:03 +0100 Subject: [PATCH] Fix char[] passed as char** in ptools_set_backend_file_dates msgErr was declared as char[1024] but cast to char** and passed to ptools_backend_call(). The function writes a char* into *err, corrupting the first sizeof(char*) bytes of the array. Change to char *errPtr = NULL and free it after use. Fixes GH #216 --- pclsync/ptools.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/pclsync/ptools.c b/pclsync/ptools.c index 50fe1b2..f48ba82 100644 --- a/pclsync/ptools.c +++ b/pclsync/ptools.c @@ -451,7 +451,7 @@ void ptools_send_psyncs_event(const char *binapi, const char *auth) { int ptools_set_backend_file_dates(uint64_t fileid, time_t ctime, time_t mtime) { int callRes; - char msgErr[1024]; + char *errPtr = NULL; binresult *retData; pdbg_logf(D_NOTICE, @@ -469,7 +469,7 @@ int ptools_set_backend_file_dates(uint64_t fileid, time_t ctime, time_t mtime) { callRes = ptools_backend_call(apiserver, "setfilemtime", FOLDER_META, &requiredParams1, - &optionalParams, &retData, (char **)msgErr); + &optionalParams, &retData, &errPtr); pdbg_logf(D_NOTICE, "cTime res: [%d]", callRes); @@ -481,10 +481,13 @@ int ptools_set_backend_file_dates(uint64_t fileid, time_t ctime, time_t mtime) { callRes = ptools_backend_call(apiserver, "setfilemtime", FOLDER_META, &requiredParams, - &optionalParams, &retData, (char **)msgErr); + &optionalParams, &retData, &errPtr); pdbg_logf(D_NOTICE, "mTime res: [%d]", callRes); + if (errPtr) + free(errPtr); + return callRes; }