fix(review): address F1, F6, F9, F16 from deep review
All checks were successful
CI Code / Check spelling (pull_request) Successful in 15s
CI Code / Check coding style (pull_request) Successful in 32s
CI Code / Linux (debian) (pull_request) Successful in 5m1s
CI Code / Linux (ubuntu) (pull_request) Successful in 5m2s
CI Code / Linux (arch) (pull_request) Successful in 5m47s
CI Code / Code Coverage (pull_request) Successful in 6m35s

- src/log.c (F16): log_stderr_init no longer closes STDERR_FILENO
  immediately after dup2(). The previous 'close(dup_fd)' closed fd 2
  because dup2 returns newfd on success; the in-app stderr capture
  pipe was silently dead, dropping libstrophe/openssl error output.
  Close the original stderr_pipe[1] instead and remember that the
  write end now lives at STDERR_FILENO so _log_stderr_close stays
  correct.

- src/database_sqlite.c (F1): NULL-check sqlite3_mprintf result
  before passing it to sqlite3_exec in the DbVersion bootstrap path.

- src/tools/editor.c (F9): drop three orphan #includes
  (<fcntl.h>, <pthread.h>, <readline/readline.h>) left behind when
  9b03e3a50 removed the async-editor path.

- src/xmpp/jid.c (F6): match the g_new0 allocation in jid_create
  with g_free in jid_destroy. Same behaviour on glibc but stops
  being a foot-gun under custom glib allocators.

Verified with ci-build.sh in Debian docker: all 4 configs pass
(644/0, 605/0, 605/0, 644/0 unit + 130/0 functional).
This commit is contained in:
2026-05-21 15:34:33 +03:00
parent 9b03e3a508
commit 97fd81b60b
4 changed files with 10 additions and 8 deletions

View File

@@ -232,6 +232,10 @@ _sqlite_init(ProfAccount* account)
auto_sqlite char* init_version_query = sqlite3_mprintf(
"INSERT INTO `DbVersion` (`version`) VALUES (%d) ON CONFLICT(`version`) DO NOTHING",
latest_version);
if (!init_version_query) {
log_error("OOM allocating initial DbVersion insert query");
goto out;
}
if (SQLITE_OK != sqlite3_exec(g_chatlog_database, init_version_query, NULL, 0, &err_msg)) {
goto out;
}

View File

@@ -348,10 +348,11 @@ log_stderr_init(log_level_t level)
goto err_free;
}
int dup_fd = dup2(stderr_pipe[1], STDERR_FILENO);
if (dup_fd < 0)
if (dup2(stderr_pipe[1], STDERR_FILENO) < 0)
goto err_free;
close(dup_fd);
// fd 2 now owns the pipe write end; release the original.
close(stderr_pipe[1]);
stderr_pipe[1] = STDERR_FILENO;
stderr_level = level;
stderr_inited = 1;

View File

@@ -9,14 +9,11 @@
* SPDX-License-Identifier: GPL-3.0-or-later WITH OpenSSL-exception
*/
#include <fcntl.h>
#include <glib.h>
#include <errno.h>
#include <stdio.h> // necessary for readline
#include <readline/readline.h>
#include <stdio.h>
#include <sys/wait.h>
#include <unistd.h>
#include <pthread.h>
#include <signal.h>
#include "config/files.h"

View File

@@ -217,7 +217,7 @@ jid_destroy(Jid* jid)
g_free(jid->resourcepart);
g_free(jid->barejid);
g_free(jid->fulljid);
free(jid);
g_free(jid);
}
gboolean