Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package booth for openSUSE:Factory checked in at 2022-09-09 18:28:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/booth (Old) and /work/SRC/openSUSE:Factory/.booth.new.2083 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "booth" Fri Sep 9 18:28:13 2022 rev:49 rq:1002264 version:1.0+20220724.dce51f9 Changes: -------- --- /work/SRC/openSUSE:Factory/booth/booth.changes 2021-09-30 23:44:49.776567909 +0200 +++ /work/SRC/openSUSE:Factory/.booth.new.2083/booth.changes 2022-09-09 18:29:48.453311156 +0200 @@ -1,0 +2,13 @@ +Thu Jul 28 09:26:59 UTC 2022 - pgaj...@suse.com + +- Update to version 1.0+20220724.dce51f9: + * ticket: Fix compiler warning + * rpm: use new package name for pacemaker devel on opensuse + * Revert "Refactor: main: substitute is_auth_req macro" + * doc: Describe debug config file option + * handler: Use only signal-safe functions + * main: Use only signal-safe functions + * fix bashisms (use printf instead of echo) +- fixes CVE-2022-2553 [bsc#1201946] + +------------------------------------------------------------------- Old: ---- booth-1.0+20210519.bfb2f92.tar.bz2 New: ---- booth-1.0+20220724.dce51f9.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ booth.spec ++++++ --- /var/tmp/diff_new_pack.q33CEm/_old 2022-09-09 18:29:48.857312193 +0200 +++ /var/tmp/diff_new_pack.q33CEm/_new 2022-09-09 18:29:48.861312202 +0200 @@ -1,7 +1,7 @@ # # spec file for package booth # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -29,7 +29,7 @@ %define _fwdefdir %{_prefix}/lib/firewalld/services Name: booth -Version: 1.0+20210519.bfb2f92 +Version: 1.0+20220724.dce51f9 Release: 0 Summary: Ticket Manager for Multi-site Clusters License: GPL-2.0-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.q33CEm/_old 2022-09-09 18:29:48.889312275 +0200 +++ /var/tmp/diff_new_pack.q33CEm/_new 2022-09-09 18:29:48.893312285 +0200 @@ -1,11 +1,11 @@ <services> <service name="tar_scm" mode="disabled"> - <param name="url">git://github.com/ClusterLabs/booth.git</param> + <param name="url">https://github.com/ClusterLabs/booth.git</param> <param name="scm">git</param> <param name="exclude">.git</param> <param name="filename">booth</param> <param name="versionformat">1.0+%cd.%h</param> - <param name="revision">master</param> + <param name="revision">main</param> <param name="changesgenerate">enable</param> </service> <service name="recompress" mode="disabled"> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.q33CEm/_old 2022-09-09 18:29:48.909312326 +0200 +++ /var/tmp/diff_new_pack.q33CEm/_new 2022-09-09 18:29:48.913312336 +0200 @@ -1,6 +1,8 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/ClusterLabs/booth.git</param> - <param name="changesrevision">7a456e37a74e78c31557dc04022a4430493ae5b4</param></service></servicedata> + <param name="changesrevision">da79b8ba28ad4837a0fee13e5f8fb6f89fe0e24c</param></service><service name="tar_scm"> + <param name="url">https://github.com/ClusterLabs/booth.git</param> + <param name="changesrevision">7643788fe98ab144f4d42a4268aff665f62b26c0</param></service></servicedata> (No newline at EOF) ++++++ booth-1.0+20210519.bfb2f92.tar.bz2 -> booth-1.0+20220724.dce51f9.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth-1.0+20210519.bfb2f92/.gitignore new/booth-1.0+20220724.dce51f9/.gitignore --- old/booth-1.0+20210519.bfb2f92/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/booth-1.0+20220724.dce51f9/.gitignore 2022-07-24 17:15:24.000000000 +0200 @@ -0,0 +1,55 @@ +Makefile.in +Makefile +compile +autom4te.cache +aclocal.m4 +config.guess +config.status +config.sub +configure +depcomp +install-sh +missing +test-driver +*.trs +*.log +*.rpm +*.o +.deps +.version +.dirstamp + +booth-*.tar* + +conf/booth*.service +docs/*.8 +script/service-runnable +script/unit-test.py +src/b_config.h.in +src/b_config.h +src/booth_config.h +src/boothd +src/stamp-h1 +src/stamp-h2 +test/boothtestenv.py +test/runtests.py + +booth.spec +booth.pc + +# cscope files +cscope.* +ncscope.* + +# ctags files +tags + +# vim temp files +.*.sw? +*~ + +# test suite random files +*.pyc +__pycache__ + +cov* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth-1.0+20210519.bfb2f92/booth.spec.in new/booth-1.0+20220724.dce51f9/booth.spec.in --- old/booth-1.0+20210519.bfb2f92/booth.spec.in 2021-05-19 22:29:59.000000000 +0200 +++ new/booth-1.0+20220724.dce51f9/booth.spec.in 2022-07-24 17:15:24.000000000 +0200 @@ -80,8 +80,12 @@ %if 0%{?fedora} || 0%{?centos} || 0%{?rhel} BuildRequires: pacemaker-libs-devel %else +%if 0%{?suse_version} > 1500 +BuildRequires: libpacemaker3-devel +%else BuildRequires: libpacemaker-devel %endif +%endif %if 0%{?with_glue} %if 0%{?fedora} || 0%{?centos} || 0%{?rhel} BuildRequires: cluster-glue-libs-devel diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth-1.0+20210519.bfb2f92/docs/boothd.8.txt new/booth-1.0+20220724.dce51f9/docs/boothd.8.txt --- old/booth-1.0+20210519.bfb2f92/docs/boothd.8.txt 2021-05-19 22:29:59.000000000 +0200 +++ new/booth-1.0+20220724.dce51f9/docs/boothd.8.txt 2022-07-24 17:15:24.000000000 +0200 @@ -376,6 +376,10 @@ controlled by Raft algorithm). Assign the strings "manual" or "MANUAL" to define the ticket as manually controlled. +*'debug'*:: + Specifies the debug output level. Alternative to + command line argument. Effective only for 'daemon' + mode of operation. One example of a booth configuration file: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth-1.0+20210519.bfb2f92/script/lsb/booth-arbitrator new/booth-1.0+20220724.dce51f9/script/lsb/booth-arbitrator --- old/booth-1.0+20210519.bfb2f92/script/lsb/booth-arbitrator 2021-05-19 22:29:59.000000000 +0200 +++ new/booth-1.0+20220724.dce51f9/script/lsb/booth-arbitrator 2022-07-24 17:15:24.000000000 +0200 @@ -57,7 +57,7 @@ } status() { - echo -n "BOOTH daemon is " + printf "BOOTH daemon is " if check_status; then # shellcheck disable=SC2154 echo "running - PID $booth_lockpid for $booth_cfg_name, $booth_addr_string:$booth_port" @@ -79,7 +79,7 @@ return 0 ;; $BOOTH_ERROR_GENERIC|$BOOTH_DAEMON_NOT_RUNNING) - echo -n $"Starting BOOTH arbitrator daemon: " + printf "Starting BOOTH arbitrator daemon: " startproc $exec start "${cnf:+-c$cnf}" rc_status -v ;; @@ -102,7 +102,7 @@ *) return 1;; esac - echo -n $"Stopping BOOTH arbitrator daemon: " + printf "Stopping BOOTH arbitrator daemon: " # $exec stop "${cnf:+-c$cnf}" # sleep 1 pkill -TERM -s $booth_lockpid boothd @@ -163,7 +163,7 @@ foreach condrestart ;; *) - echo $"Usage: $0 {start|stop|restart|try-restart|condrestart|reload|force-reload|status}" + echo "Usage: $0 {start|stop|restart|try-restart|condrestart|reload|force-reload|status}" exit 2 ;; esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth-1.0+20210519.bfb2f92/src/handler.c new/booth-1.0+20220724.dce51f9/src/handler.c --- old/booth-1.0+20210519.bfb2f92/src/handler.c 2021-05-19 22:29:59.000000000 +0200 +++ new/booth-1.0+20220724.dce51f9/src/handler.c 2022-07-24 17:15:24.000000000 +0200 @@ -155,7 +155,6 @@ static void ignore_rest(int sig) { signal(SIGTERM, SIG_IGN); - log_info("external programs handler caught TERM, ignoring status of external test programs"); ignore_status = 1; if (curr_pid > 0) { (void)kill(curr_pid, SIGTERM); @@ -230,6 +229,14 @@ rv = test_exit_status(tk, prog, status, 1); if (rv) _exit(rv); + } else { + /* + * To make ignore_rest function signal safe log_info + * must be removed from signal function. Information + * about signal delivery is important so put it here. + */ + log_info("external programs handler caught TERM, ignoring " + "status of external test programs"); } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth-1.0+20210519.bfb2f92/src/main.c new/booth-1.0+20220724.dce51f9/src/main.c --- old/booth-1.0+20210519.bfb2f92/src/main.c 2021-05-19 22:29:59.000000000 +0200 +++ new/booth-1.0+20220724.dce51f9/src/main.c 2022-07-24 17:15:24.000000000 +0200 @@ -109,6 +109,14 @@ struct booth_config *booth_conf; struct command_line cl; +/* + * Global signal handlers variables + */ +static int sig_exit_handler_called = 0; +static int sig_exit_handler_sig = 0; +static int sig_usr1_handler_called = 0; +static int sig_chld_handler_called = 0; + static void client_alloc(void) { int i; @@ -356,7 +364,7 @@ if (rv < 0) goto out; - if (is_auth_req()) { + if (booth_conf->authfile[0] != '\0') { rv = read_authkey(); if (rv < 0) goto out; @@ -480,6 +488,24 @@ return 0; } +static int process_signals(void) +{ + if (sig_exit_handler_called) { + log_info("caught signal %d", sig_exit_handler_sig); + return 1; + } + if (sig_usr1_handler_called) { + sig_usr1_handler_called = 0; + tickets_log_info(); + } + if (sig_chld_handler_called) { + sig_chld_handler_called = 0; + wait_child(SIGCHLD); + } + + return 0; +} + static int loop(int fd) { void (*workfn) (int ci); @@ -532,6 +558,10 @@ } process_tickets(); + + if (process_signals() != 0) { + return 0; + } } return 0; @@ -1257,11 +1287,15 @@ rlimit.rlim_cur = RLIM_INFINITY; rlimit.rlim_max = RLIM_INFINITY; - setrlimit(RLIMIT_MEMLOCK, &rlimit); - rv = mlockall(MCL_CURRENT | MCL_FUTURE); + rv = setrlimit(RLIMIT_MEMLOCK, &rlimit); if (rv < 0) { - log_error("mlockall failed"); - } + log_error("setrlimit failed"); + } else { + rv = mlockall(MCL_CURRENT | MCL_FUTURE); + if (rv < 0) { + log_error("mlockall failed"); + } + } rv = sched_get_priority_max(SCHED_RR); if (rv != -1) { @@ -1414,8 +1448,18 @@ static void sig_exit_handler(int sig) { - log_info("caught signal %d", sig); - exit(0); + sig_exit_handler_sig = sig; + sig_exit_handler_called = 1; +} + +static void sig_usr1_handler(int sig) +{ + sig_usr1_handler_called = 1; +} + +static void sig_chld_handler(int sig) +{ + sig_chld_handler_called = 1; } static int do_server(int type) @@ -1442,7 +1486,7 @@ /* * Register signal and exit handler */ - signal(SIGUSR1, (__sighandler_t)tickets_log_info); + signal(SIGUSR1, (__sighandler_t)sig_usr1_handler); signal(SIGTERM, (__sighandler_t)sig_exit_handler); signal(SIGINT, (__sighandler_t)sig_exit_handler); /* we'll handle errors there and then */ @@ -1493,7 +1537,7 @@ } #endif - signal(SIGCHLD, (__sighandler_t)wait_child); + signal(SIGCHLD, (__sighandler_t)sig_chld_handler); rv = loop(lock_fd); return rv; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth-1.0+20210519.bfb2f92/src/ticket.c new/booth-1.0+20220724.dce51f9/src/ticket.c --- old/booth-1.0+20210519.bfb2f92/src/ticket.c 2021-05-19 22:29:59.000000000 +0200 +++ new/booth-1.0+20220724.dce51f9/src/ticket.c 2022-07-24 17:15:24.000000000 +0200 @@ -395,7 +395,8 @@ char timeout_str[64]; char pending_str[64]; char *data, *cp; - int i, alloc, site_index; + int i, site_index; + size_t alloc; time_t ts; int multiple_grant_warning_length = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/booth-1.0+20210519.bfb2f92/test/serverenv.py new/booth-1.0+20220724.dce51f9/test/serverenv.py --- old/booth-1.0+20210519.bfb2f92/test/serverenv.py 2021-05-19 22:29:59.000000000 +0200 +++ new/booth-1.0+20220724.dce51f9/test/serverenv.py 2022-07-24 17:15:24.000000000 +0200 @@ -133,8 +133,14 @@ start = time.time() wait = 0.1 while True: - if must_exist and os.path.exists(lock_file) and os.path.getsize(lock_file) > 0: - return True + if must_exist and os.path.exists(lock_file): + # Lock file must contain single line + l = open(lock_file) + lines = l.readlines() + l.close() + + if len(lines) == 1: + return True if not must_exist and not os.path.exists(lock_file): return True elapsed = time.time() - start