]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Fixed a stupid bug in parse-and-exit mode
authorMaria Matejka <mq@ucw.cz>
Thu, 29 Aug 2024 12:37:19 +0000 (14:37 +0200)
committerMaria Matejka <mq@ucw.cz>
Thu, 29 Aug 2024 12:37:19 +0000 (14:37 +0200)
Introduced in 08ff0af8986099e6fb1d8a94c7ce62c83e4df7f1, the additional CLI
configuration wasn't properly initialized in the parse-and-exit mode
due to an oversight that cli_init_unix() is not called in this mode.

Thanks to Felix Friedlander for the bugreport.

sysdep/unix/main.c

index 880cc3c4aa14c53a221acedc97c2338d6725727a..b825a1f31a7a11e587eccd2a4192833a550919b1 100644 (file)
@@ -599,7 +599,6 @@ static void
 cli_init_unix(uid_t use_uid, gid_t use_gid)
 {
   ASSERT_DIE(main_control_socket_config == NULL);
-  cli_init();
 
   main_control_socket_config = &initial_control_socket_config;
   main_control_socket_config->uid = use_uid;
@@ -614,6 +613,9 @@ cli_init_unix(uid_t use_uid, gid_t use_gid)
 static void
 cli_preconfig(struct config *c)
 {
+  if (!main_control_socket_config)
+    return;
+
   struct cli_config *ccf = mb_alloc(cli_pool, sizeof *ccf);
   memcpy(ccf, main_control_socket_config, sizeof *ccf);
   ccf->n = (struct cli_config_node) {};
@@ -1011,6 +1013,8 @@ main(int argc, char **argv)
   uid_t use_uid = get_uid(use_user);
   gid_t use_gid = get_gid(use_group);
 
+  cli_init();
+
   if (!parse_and_exit)
   {
     test_old_bird(path_control_socket);