Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pdsh for openSUSE:Factory checked in at 2026-05-23 23:24:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pdsh (Old) and /work/SRC/openSUSE:Factory/.pdsh.new.2084 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pdsh" Sat May 23 23:24:23 2026 rev:56 rq:1354661 version:2.36 Changes: -------- --- /work/SRC/openSUSE:Factory/pdsh/pdsh.changes 2025-11-07 18:26:36.601911656 +0100 +++ /work/SRC/openSUSE:Factory/.pdsh.new.2084/pdsh.changes 2026-05-23 23:25:49.740919627 +0200 @@ -1,0 +2,13 @@ +Fri May 22 04:10:27 UTC 2026 - Egbert Eich <[email protected]> + +- Update to version 2.36: + * `common/hostlist`: fix out of bounds array access. + update to latest from lsd-tools. + * Fix build on C23 compiler (gcc >= 15). + This obsoletes: Add-support-for-C23-gcc-15.patch + * Update actions versions and fix code coverage build. + * Fix some compiler warnings when compiling pdsh. + * Fix closeall() performance with large _SC_OPEN_MAX. + * `modules/genders`: fix typo. + +------------------------------------------------------------------- Old: ---- Add-support-for-C23-gcc-15.patch pdsh-2.35.tar.gz New: ---- _scmsync.obsinfo build.specials.obscpio pdsh-2.36.tar.gz ----------(Old B)---------- Old: * Fix build on C23 compiler (gcc >= 15). This obsoletes: Add-support-for-C23-gcc-15.patch * Update actions versions and fix code coverage build. ----------(Old E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pdsh.spec ++++++ --- /var/tmp/diff_new_pack.kfTHt6/_old 2026-05-23 23:25:50.512951144 +0200 +++ /var/tmp/diff_new_pack.kfTHt6/_new 2026-05-23 23:25:50.516951307 +0200 @@ -66,13 +66,12 @@ BuildRequires: genders-devel > 1.0 %endif URL: https://github.com/chaos/%{pname} -Version: 2.35 +Version: 2.36 Release: 0 Summary: Parallel remote shell program License: GPL-2.0-or-later Group: Productivity/Clustering/Computing Source: https://github.com/chaos/%{pname}/releases/download/%{pname}-%{version}/%{pname}-%{version}.tar.gz -Patch: Add-support-for-C23-gcc-15.patch %description Pdsh is a multithreaded remote shell client which executes commands on ++++++ _scmsync.obsinfo ++++++ mtime: 1779442186 commit: 386138b6d7201c83dc1653c8bbe4769c7b1faef624e0b72503ea74b1bcc99dcc url: https://src.opensuse.org/Cluster/pdsh.git revision: main ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-05-22 11:29:46.000000000 +0200 @@ -0,0 +1,4 @@ +*.obscpio +*.osc +_build.* +.pbuild ++++++ pdsh-2.35.tar.gz -> pdsh-2.36.tar.gz ++++++ ++++ 12322 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdsh-2.35/Makefile.am new/pdsh-2.36/Makefile.am --- old/pdsh-2.35/Makefile.am 2023-04-18 16:23:50.000000000 +0200 +++ new/pdsh-2.36/Makefile.am 2026-01-12 15:34:59.000000000 +0100 @@ -47,6 +47,9 @@ # coverage +CODE_COVERAGE_LCOV_RMOPTS = \ + --ignore-errors unused + CODE_COVERAGE_IGNORE_PATTERN = \ "/tests/*" \ "/pdsh/cbuf.*" \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdsh-2.35/NEWS new/pdsh-2.36/NEWS --- old/pdsh-2.35/NEWS 2023-12-19 19:55:31.000000000 +0100 +++ new/pdsh-2.36/NEWS 2026-01-12 16:28:20.000000000 +0100 @@ -1,6 +1,14 @@ This file describes changes in recent versions of pdsh. It primarily documents those changes that are of interest to users and admins. +* Changes in pdsh-2.36 (2025-01-12) +=================================== + -- fix build on C23 compiler (Egbert Eich) + -- mcmd: fix compiler warnings on modern GCC (Adrian Reber) + -- fix closeall performance with large _SC_OPEN_MAX (Zheyu Shen) + -- genders: fix typo in comment (Al Chu) + -- fix hostlist out of bounds array access (Al Chu) + * Changes in pdsh-2.35 (2023-12-19) =================================== -- slurm: call slurm_init() once before any call to Slurm API (Egbert Eich) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdsh-2.35/config.h.in new/pdsh-2.36/config.h.in --- old/pdsh-2.35/config.h.in 2023-12-19 16:32:58.000000000 +0100 +++ new/pdsh-2.36/config.h.in 2025-03-19 16:27:49.000000000 +0100 @@ -52,9 +52,6 @@ /* Define if you have machines */ #undef HAVE_MACHINES -/* Define to 1 if you have the <memory.h> header file. */ -#undef HAVE_MEMORY_H - /* Define if you have mrsh. */ #undef HAVE_MRSH @@ -114,13 +111,16 @@ /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the <stdio.h> header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the <stdlib.h> header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR -/* Define to 1 if you have the `strerror_r' function. */ +/* Define if you have `strerror_r'. */ #undef HAVE_STRERROR_R /* Define to 1 if you have the <strings.h> header file. */ @@ -196,7 +196,9 @@ /* Use Static Modules */ #undef STATIC_MODULES -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Define to 1 if strerror_r returns char *. */ @@ -217,11 +219,6 @@ /* Define if on AIX */ #undef _AIX -/* Enable large inode numbers on Mac OS X 10.5. */ -#ifndef _DARWIN_USE_64_BIT_INODE -# define _DARWIN_USE_64_BIT_INODE 1 -#endif - /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdsh-2.35/src/common/hostlist.c new/pdsh-2.36/src/common/hostlist.c --- old/pdsh-2.35/src/common/hostlist.c 2023-12-19 19:55:31.000000000 +0100 +++ new/pdsh-2.36/src/common/hostlist.c 2026-01-12 15:07:31.000000000 +0100 @@ -1,5 +1,5 @@ /*****************************************************************************\ - * $LSDId: hostlist.c 11882 2012-10-03 17:31:41Z grondo $ + * $LSDId: commit c08d251f3cc9b1a5b69a268f952d64f990366835 $ ***************************************************************************** * Copyright (C) 2002 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). @@ -379,7 +379,7 @@ tok = *str; while ( **str != '\0' && - (level != 0 || strchr(sep, **str) == NULL) ) { + (level != 0 || strchr(sep, **str) == NULL) ) { if ( **str == '[' ) level++; else if ( **str == ']' ) level--; (*str)++; @@ -1063,7 +1063,7 @@ if (!new) goto fail1; - assert(new->magic = HOSTLIST_MAGIC); + assert((new->magic = HOSTLIST_MAGIC)); mutex_init(&new->mutex); new->hr = (hostrange_t *) malloc(HOSTLIST_CHUNK * sizeof(hostrange_t)); @@ -1099,7 +1099,7 @@ int i; size_t oldsize; assert(hl != NULL); - assert(hl->magic == HOSTLIST_MAGIC); + assert((hl->magic == HOSTLIST_MAGIC)); oldsize = hl->size; hl->size = newsize; hl->hr = realloc((void *) hl->hr, hl->size*sizeof(hostrange_t)); @@ -1186,7 +1186,7 @@ hostlist_iterator_t hli; assert(hl != NULL); - assert(hl->magic == HOSTLIST_MAGIC); + assert((hl->magic == HOSTLIST_MAGIC)); assert(hr != NULL); if (n > hl->nranges) @@ -1225,7 +1225,7 @@ hostrange_t old; assert(hl != NULL); - assert(hl->magic == HOSTLIST_MAGIC); + assert((hl->magic == HOSTLIST_MAGIC)); assert(n < hl->nranges && n >= 0); old = hl->hr[n]; @@ -1279,7 +1279,7 @@ /* find end of alpha part * do this by finding last occurence of range_op in str */ pos = strlen(tok) - 1; - if (strstr(tok, r_op) != '\0') { + if (strstr(tok, r_op) != NULL) { while (pos >= 0 && (char) tok[pos] != range_op) pos--; } @@ -1512,7 +1512,7 @@ } while ((tok = _next_tok(sep, &str)) != NULL) { - strncpy(cur_tok, tok, 1023); + strncpy(cur_tok, tok, sizeof (cur_tok) - 1); if ((p = strchr(tok, '[')) != NULL) { char *q, *prefix = tok; @@ -1529,17 +1529,20 @@ else _push_range_list(new, prefix, ranges, nr); + } else /* Error: brackets must be balanced */ + goto error_unmatched; - } else - hostlist_push_host(new, cur_tok); - - } else + } else if (strchr(tok, ']')) /* Error: brackets must be balanced */ + goto error_unmatched; + else /* Ok: No brackets found, single host */ hostlist_push_host(new, cur_tok); } free(orig); return new; + error_unmatched: + errno = EINVAL; error: err = errno; hostlist_destroy(new); @@ -1595,7 +1598,7 @@ for (i = 0; i < hl->nranges; i++) hostrange_destroy(hl->hr[i]); free(hl->hr); - assert(hl->magic = 0x1); + assert((hl->magic = 0x1)); UNLOCK_HOSTLIST(hl); mutex_destroy(&hl->mutex); free(hl); @@ -2215,7 +2218,7 @@ i->idx = 0; i->depth = -1; i->next = i; - assert(i->magic = HOSTLIST_MAGIC); + assert((i->magic = HOSTLIST_MAGIC)); return i; } @@ -2266,7 +2269,7 @@ } } UNLOCK_HOSTLIST(i->hl); - assert(i->magic = 0x1); + assert((i->magic = 0x1)); free(i); } @@ -2278,7 +2281,11 @@ return; if (++(i->depth) > (i->hr->hi - i->hr->lo)) { i->depth = 0; - i->hr = i->hl->hr[++i->idx]; + if (++i->idx >= i->hl->size) { + i->hr = NULL; + return; + } + i->hr = i->hl->hr[i->idx]; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdsh-2.35/src/common/hostlist.h new/pdsh-2.36/src/common/hostlist.h --- old/pdsh-2.35/src/common/hostlist.h 2023-12-19 19:55:31.000000000 +0100 +++ new/pdsh-2.36/src/common/hostlist.h 2026-01-12 15:07:31.000000000 +0100 @@ -1,7 +1,5 @@ /*****************************************************************************\ - * $Id$ - ***************************************************************************** - * $LSDId: hostlist.h 7428 2008-05-23 16:08:31Z grondo $ + * $LSDId: commit c08d251f3cc9b1a5b69a268f952d64f990366835 $ ***************************************************************************** * Copyright (C) 2002 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdsh-2.35/src/common/macros.h new/pdsh-2.36/src/common/macros.h --- old/pdsh-2.35/src/common/macros.h 2023-12-19 19:55:31.000000000 +0100 +++ new/pdsh-2.36/src/common/macros.h 2026-01-12 15:34:59.000000000 +0100 @@ -58,9 +58,11 @@ #ifndef _BOOL_DEFINED # define _BOOL_DEFINED +# if __STDC_VERSION__ < 202311L # if !defined (true) && !defined (false) typedef enum { false, true } bool; # endif +# endif #endif #endif /* !_MACROS_INCLUDED */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdsh-2.35/src/common/pipecmd.c new/pdsh-2.36/src/common/pipecmd.c --- old/pdsh-2.35/src/common/pipecmd.c 2023-12-19 19:55:31.000000000 +0100 +++ new/pdsh-2.36/src/common/pipecmd.c 2026-01-12 15:34:59.000000000 +0100 @@ -33,7 +33,10 @@ #include <signal.h> #include <errno.h> #include <unistd.h> +#include <dirent.h> #include <stdio.h> +#include <string.h> +#include <stdlib.h> #include "src/common/xmalloc.h" #include "src/common/xstring.h" @@ -252,6 +255,32 @@ static void closeall (int fd) { +#ifdef __linux + struct dirent *d; + DIR *dir; + dir = opendir("/proc/self/fd"); + if (dir) { + int dfd = dirfd(dir); + while ((d = readdir(dir))) { + char * end; + unsigned int ufd; + int cfd; + + if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, "..")) + continue; + errno = 0; + ufd = strtoul(d->d_name, &end, 10); + if (errno || end == d->d_name || !end || *end) + continue; + cfd = (int) ufd; + if (cfd == dfd || cfd < fd) + continue; + close(cfd); + } + closedir(dir); + return; + } +#endif int fdlimit = sysconf (_SC_OPEN_MAX); while (fd < fdlimit) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdsh-2.35/src/modules/genders.c new/pdsh-2.36/src/modules/genders.c --- old/pdsh-2.35/src/modules/genders.c 2023-12-19 19:55:31.000000000 +0100 +++ new/pdsh-2.36/src/modules/genders.c 2026-01-12 15:37:05.000000000 +0100 @@ -404,7 +404,7 @@ /* * If node not found, attempt to lookup canonical name via - * altername name. + * alternate name. */ if ((rc < 0) && (genders_errnum(g) == GENDERS_ERR_NOTFOUND)) rc = genders_getnodes (g, &altname, 1, altattr, host); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdsh-2.35/src/modules/mcmd.c new/pdsh-2.36/src/modules/mcmd.c --- old/pdsh-2.35/src/modules/mcmd.c 2023-12-19 19:55:31.000000000 +0100 +++ new/pdsh-2.36/src/modules/mcmd.c 2026-01-12 15:34:59.000000000 +0100 @@ -207,8 +207,12 @@ /* * Drop privileges if running setuid root */ - if ((geteuid() == 0) && (getuid() != 0)) - setuid (getuid ()); + if ((geteuid() == 0) && (getuid() != 0)) { + if ((setuid (getuid ()) < 0)) { + err("%p: mcmd: setuid () failed\n"); + return -1; + } + } /* * Generate a random number to send in our package to the @@ -277,8 +281,8 @@ if (gethostname (hostname, MAXHOSTNAMELEN) < 0) errx ("mcmd: gethostname: %m\n"); - strncpy (str, MRSH_LOCALHOST_KEY, MRSH_LOCALHOST_KEYLEN); - strncat (str, hostname, maxlen - MRSH_LOCALHOST_KEYLEN - 1); + strncpy (str, MRSH_LOCALHOST_KEY, MRSH_LOCALHOST_KEYLEN + 1); + strncat (str, hostname, maxlen - MRSH_LOCALHOST_KEYLEN); return (strlen (str)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/pdsh-2.35/src/pdsh/cbuf.c new/pdsh-2.36/src/pdsh/cbuf.c --- old/pdsh-2.35/src/pdsh/cbuf.c 2023-12-19 18:31:59.000000000 +0100 +++ new/pdsh-2.36/src/pdsh/cbuf.c 2026-01-12 15:34:59.000000000 +0100 @@ -817,7 +817,8 @@ { int len; int nfree, ncopy, n; - int ndrop = 0, d; + int ndrop = 0; + int d = 0; char *psrc = srcbuf; char *newline = "\n";
