@cryptotaxi247 / netdata-1 / commits / 84f7f5a98

Fix a potential invalid double free memory (#18905)

Make sure err_msg is always initialized

Stelios Fragkakis committed Oct 31, 2024 at 19:29 UTC 84f7f5a986b05b089f2ec17467937811286a931b
1 file changed +5 -3
src/database/sqlite/sqlite_functions.c
+5 -3
@@ -252,14 +252,16 @@ int db_execute(sqlite3 *db, const char *cmd)
252 int cnt = 0;
253
254 while (cnt < SQL_MAX_RETRY) {
255 - char *err_msg;
255 + char *err_msg = NULL;
256 rc = sqlite3_exec_monitored(db, cmd, 0, 0, &err_msg);
257 if (likely(rc == SQLITE_OK))
258 break;
259
260 ++cnt;
261 - error_report("Failed to execute '%s', rc = %d (%s) -- attempt %d", cmd, rc, err_msg, cnt);
262 - sqlite3_free(err_msg);
261 + error_report("Failed to execute '%s', rc = %d (%s) -- attempt %d", cmd, rc, err_msg ? err_msg : "unknown", cnt);
262 + if (err_msg) {
263 + sqlite3_free(err_msg);
264 + }
265
266 if (likely(rc == SQLITE_BUSY || rc == SQLITE_LOCKED)) {
267 usleep(SQLITE_INSERT_DELAY * USEC_PER_MS);