Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package which for openSUSE:Factory checked in at 2026-05-27 16:13:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/which (Old) and /work/SRC/openSUSE:Factory/.which.new.1937 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "which" Wed May 27 16:13:31 2026 rev:10 rq:1355150 version:2.25 Changes: -------- --- /work/SRC/openSUSE:Factory/which/which.changes 2025-02-07 22:46:34.400066798 +0100 +++ /work/SRC/openSUSE:Factory/.which.new.1937/which.changes 2026-05-27 16:13:57.905535288 +0200 @@ -1,0 +2,6 @@ +Fri May 22 12:08:32 UTC 2026 - Andreas Stieger <[email protected]> + +- Update to 2.25: + * Fix an out of bounds stack read + +------------------------------------------------------------------- Old: ---- which-2.23.tar.gz which-2.23.tar.gz.sig New: ---- which-2.25.tar.gz which-2.25.tar.gz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ which.spec ++++++ --- /var/tmp/diff_new_pack.YjRPqu/_old 2026-05-27 16:13:58.645565776 +0200 +++ /var/tmp/diff_new_pack.YjRPqu/_new 2026-05-27 16:13:58.649565941 +0200 @@ -2,7 +2,7 @@ # spec file for package which # # Copyright (c) 2022 SUSE LLC -# Copyright (c) 2025 Andreas Stieger <[email protected]> +# Copyright (c) 2026 Andreas Stieger <[email protected]> # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ Name: which -Version: 2.23 +Version: 2.25 Release: 0 Summary: Displays where a particular program in your path is located License: GPL-3.0-or-later @@ -34,7 +34,7 @@ specified program is in your PATH. %prep -%autosetup +%autosetup -p1 %build %configure ++++++ which-2.23.tar.gz -> which-2.25.tar.gz ++++++ ++++ 6700 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/which-2.23/EXAMPLES new/which-2.25/EXAMPLES --- old/which-2.23/EXAMPLES 2025-02-01 19:56:07.000000000 +0100 +++ new/which-2.25/EXAMPLES 2026-05-21 18:08:55.000000000 +0200 @@ -35,7 +35,7 @@ Report bugs to <[email protected]>. >/home/carlo/projects/savannah.which/which/build/which --version -GNU which v2.23, Copyright (C) 1999 - 2025 Carlo Wood. +GNU which v2.25, Copyright (C) 1999 - 2026 Carlo Wood. GNU which comes with ABSOLUTELY NO WARRANTY; This program is free software; your freedom to use, change and distribute this program is protected by the GPL. @@ -152,9 +152,9 @@ /home/carlo/projects/savannah.which/which/build/which: no xxx in (.) >id -uid=1000(carlo) gid=1000(carlo) groups=1000(carlo),0(root),150(wireshark),960(docker),972(deluge),973(realtime),995(audio),998(wheel) +uid=1000(carlo) gid=1000(carlo) groups=1000(carlo),0(root),150(wireshark),943(brlapi),946(libvirt),960(docker),972(deluge),973(realtime),995(audio),998(wheel),1001(remountd) >ls -l xxx --rwx------ 1 root carlo 0 Feb 1 19:56 xxx +-rwx------ 1 root carlo 0 May 21 18:08 xxx >su >chmod 750 xxx >chgrp carlo xxx 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/which-2.23/INSTALL new/which-2.25/INSTALL --- old/which-2.23/INSTALL 2025-01-11 01:26:11.000000000 +0100 +++ new/which-2.25/INSTALL 2026-05-21 16:11:34.000000000 +0200 @@ -1,3 +1,9 @@ +Git Clones +=========== + + If you are using the bare git source you must follow the maintainer +instructions in the README.md the first time you checkout the source. + Basic Installation ================== 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/which-2.23/NEWS new/which-2.25/NEWS --- old/which-2.23/NEWS 2025-02-01 19:53:30.000000000 +0100 +++ new/which-2.25/NEWS 2026-05-21 17:55:44.000000000 +0200 @@ -1,3 +1,12 @@ +Version 2.24 --> 2.25 + +* The changes of 2.22 and 2.23 were not in 2.24 because accidently used an old repository. + +Version 2.23 --> 2.24 + +* Bug fix for an out of bounds stack read (by Daniel Anderson) + Not exploitable as far as I can tell- so low priority. + Version 2.22 --> 2.23 * Bug fix; cleaning up a path like "/path/a/../b/foo" before printing was broken in 2.22. 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/which-2.23/README new/which-2.25/README --- old/which-2.23/README 2025-02-01 19:54:08.000000000 +0100 +++ new/which-2.25/README 2026-05-21 18:05:58.000000000 +0200 @@ -23,112 +23,112 @@ Manual page =========== - which - shows the full path of (shell) commands. + which - shows the full path of (shell) commands. [1mSYNOPSIS[0m - [1mwhich [22m[options] [--] programname [...] + [1mwhich [22m[options] [--] programname [...] [1mDESCRIPTION[0m - [1mWhich [22mtakes one or more arguments. For each of its arguments it prints - to stdout the full path of the executables that would have been exe- - cuted when this argument had been entered at the shell prompt. It does - this by searching for an executable or script in the directories listed - in the environment variable [1mPATH [22musing the same algorithm as [1mbash(1)[22m. + [1mWhich [22mtakes one or more arguments. For each of its arguments it prints to + stdout the full path of the executables that would have been executed when + this argument had been entered at the shell prompt. It does this by search- + ing for an executable or script in the directories listed in the environ- + ment variable [1mPATH [22musing the same algorithm as [1mbash(1)[22m. - This man page is generated from the file [4mwhich.texinfo[24m. + This man page is generated from the file [4mwhich.texinfo[24m. [1mOPTIONS[0m - [1m--all[22m, [1m-a[0m - Print all matching executables in [1mPATH[22m, not just the first. + [1m--all[22m, [1m-a[0m + Print all matching executables in [1mPATH[22m, not just the first. - [1m--read-alias[22m, [1m-i[0m - Read aliases from stdin, reporting matching ones on stdout. This is - useful in combination with using an alias for which itself. For ex- - ample - [1malias which='alias | which -i'[22m. - - [1m--skip-alias[0m - Ignore option `--read-alias', if any. This is useful to explicity - search for normal binaries, while using the `--read-alias' option - in an alias or function for which. - - [1m--read-functions[0m - Read shell function definitions from stdin, reporting matching ones - on stdout. This is useful in combination with using a shell func- - tion for which itself. For example: - [1mwhich() { declare -f | which --read-functions $@ }[0m - export -f which - - [1m--skip-functions[0m - Ignore option `--read-functions', if any. This is useful to explic- - ity search for normal binaries, while using the `--read-functions' - option in an alias or function for which. - - [1m--skip-dot[0m - Skip directories in [1mPATH [22mthat start with a dot. - - [1m--skip-tilde[0m - Skip directories in [1mPATH [22mthat start with a tilde and executables - which reside in the [1mHOME [22mdirectory. - - [1m--show-dot[0m - If a directory in [1mPATH [22mstarts with a dot and a matching executable - was found for that path, then print "./programname" rather than the - full path. - - [1m--show-tilde[0m - Output a tilde when a directory matches the [1mHOME [22mdirectory. This - option is ignored when which is invoked as root. - - [1m--tty-only[0m - Stop processing options on the right if not on tty. - - [1m--version,-v,-V[0m - Print version information on standard output then exit success- - fully. + [1m--read-alias[22m, [1m-i[0m + Read aliases from stdin, reporting matching ones on stdout. This is + useful in combination with using an alias for which itself. For example + [1malias which='alias | which -i'[22m. + + [1m--skip-alias[0m + Ignore option `--read-alias', if any. This is useful to explicity + search for normal binaries, while using the `--read-alias' option in an + alias or function for which. + + [1m--read-functions[0m + Read shell function definitions from stdin, reporting matching ones on + stdout. This is useful in combination with using a shell function for + which itself. For example: + [1mwhich() { declare -f | which --read-functions "$@" }[0m + export -f which + + [1m--skip-functions[0m + Ignore option `--read-functions', if any. This is useful to explicity + search for normal binaries, while using the `--read-functions' option + in an alias or function for which. + + [1m--skip-dot[0m + Skip directories in [1mPATH [22mthat start with a dot. + + [1m--skip-tilde[0m + Skip directories in [1mPATH [22mthat start with a tilde and executables which + reside in the [1mHOME [22mdirectory. + + [1m--show-dot[0m + If a directory in [1mPATH [22mstarts with a dot and a matching executable was + found for that path, then print "./programname" rather than the full + path. + + [1m--show-tilde[0m + Output a tilde when a directory matches the [1mHOME [22mdirectory. This option + is ignored when which is invoked as root. + + [1m--tty-only[0m + Stop processing options on the right if not on tty. + [1m--tty-only[0m + Stop processing options on the right if not on tty. - [1m--help[0m - Print usage information on standard output then exit successfully. + [1m--version,-v,-V[0m + Print version information on standard output then exit successfully. + + [1m--help[0m + Print usage information on standard output then exit successfully. [1mRETURN VALUE[0m - [1mWhich [22mreturns the number of failed arguments, or -1 when no `program- - name' was given. + [1mWhich [22mreturns the number of failed arguments, or -1 when no `programname' + was given. [1mEXAMPLE[0m - The recommended way to use this utility is by adding an alias (C shell) - or shell function (Bourne shell) for [1mwhich [22mlike the following: + The recommended way to use this utility is by adding an alias (C shell) or + shell function (Bourne shell) for [1mwhich [22mlike the following: - [ba]sh: + [ba]sh: - which () - { - (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@ - } - export -f which + which () + { + (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot "$@" + } + export -f which - [t]csh: + [t]csh: - alias which 'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' + alias which 'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' - This will print the readable ~/ and ./ when starting which from your - prompt, while still printing the full path when used from a script: + This will print the readable ~/ and ./ when starting which from your + prompt, while still printing the full path when used from a script: - > which q2 - ~/bin/q2 - > echo $(which q2) - /home/carlo/bin/q2 + > which q2 + ~/bin/q2 + > echo $(which q2) + /home/carlo/bin/q2 [1mBUGS[0m - The [1mHOME [22mdirectory is determined by looking for the [1mHOME [22menvironment - variable, which aborts when this variable doesn't exist. [1mWhich [22mwill - consider two equivalent directories to be different when one of them - contains a path with a symbolic link. + The [1mHOME [22mdirectory is determined by looking for the [1mHOME [22menvironment vari- + able, which aborts when this variable doesn't exist. [1mWhich [22mwill consider + two equivalent directories to be different when one of them contains a path + with a symbolic link. [1mAUTHOR[0m - Carlo Wood <[email protected]> + Carlo Wood <[email protected]> [1mSEE ALSO[0m - [1mbash(1)[0m + [1mbash(1)[0m - [4mWHICH[24m(1) + [4mWHICH[24m(1) 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/which-2.23/README.alias new/which-2.25/README.alias --- old/which-2.23/README.alias 2025-02-01 19:17:56.000000000 +0100 +++ new/which-2.25/README.alias 2025-04-15 15:14:21.000000000 +0200 @@ -3,7 +3,7 @@ function which () { - (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-dot --show-tilde $@ + (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-dot --show-tilde "$@" } export -f which 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/which-2.23/compile new/which-2.25/compile --- old/which-2.23/compile 2024-07-20 11:26:35.000000000 +0200 +++ new/which-2.25/compile 2025-07-12 14:12:09.000000000 +0200 @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2024-06-19.01; # UTC +scriptversion=2025-06-18.21; # UTC -# Copyright (C) 1999-2024 Free Software Foundation, Inc. +# Copyright (C) 1999-2025 Free Software Foundation, Inc. # Written by Tom Tromey <[email protected]>. # # This program is free software; you can redistribute it and/or modify @@ -37,11 +37,11 @@ file_conv= -# func_file_conv build_file lazy +# func_file_conv build_file unneeded_conversions # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. +# type is listed in (the comma separated) UNNEEDED_CONVERSIONS, no +# conversion will take place. func_file_conv () { file=$1 @@ -51,9 +51,20 @@ # lazily determine how to convert abs files case `uname -s` in MINGW*) - file_conv=mingw + if test -n "$MSYSTEM" && (cygpath --version) >/dev/null 2>&1; then + # MSYS2 environment. + file_conv=cygwin + else + # Original MinGW environment. + file_conv=mingw + fi ;; - CYGWIN* | MSYS*) + MSYS*) + # Old MSYS environment, or MSYS2 with 32-bit MSYS2 shell. + file_conv=cygwin + ;; + CYGWIN*) + # Cygwin environment. file_conv=cygwin ;; *) @@ -63,12 +74,14 @@ fi case $file_conv/,$2, in *,$file_conv,*) + # This is the optimization mentioned above: + # If UNNEEDED_CONVERSIONS contains $file_conv, don't convert. ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/* | msys/*) - file=`cygpath -m "$file" || echo "$file"` + cygwin/*) + file=`cygpath -w "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` @@ -343,9 +356,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: 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/which-2.23/configure.ac new/which-2.25/configure.ac --- old/which-2.23/configure.ac 2025-02-01 19:51:38.000000000 +0100 +++ new/which-2.25/configure.ac 2026-05-21 17:54:34.000000000 +0200 @@ -1,6 +1,6 @@ # Process this file with autoconf to produce a configure script. define(CW_VERSION_MAJOR, 2) -define(CW_VERSION_MINOR, 23) +define(CW_VERSION_MINOR, 25) # Because we use cwm4. define(CW_PACKAGE_NAME, [which]) 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/which-2.23/cwm4/cmake/AICxxProject new/which-2.25/cwm4/cmake/AICxxProject --- old/which-2.23/cwm4/cmake/AICxxProject 2025-01-11 22:04:45.000000000 +0100 +++ new/which-2.25/cwm4/cmake/AICxxProject 2026-01-13 21:50:04.000000000 +0100 @@ -65,7 +65,7 @@ add_custom_target(maintainer-clean # The current directory is CMAKE_CURRENT_BINARY_DIR. # No longer passing $(MAKE) because then ninja won't work. - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/cwm4/scripts/cmake_maintainer_clean.sh ${generator} \"${GITACHE_PACKAGES}\" + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/cwm4/scripts/cmake_maintainer_clean.sh ${generator} \"${PROJECT_NAME}\" \"${GITACHE_PACKAGES}\" ) #============================================================================== 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/which-2.23/cwm4/cmake/AICxxSubmodules.cmake new/which-2.25/cwm4/cmake/AICxxSubmodules.cmake --- old/which-2.23/cwm4/cmake/AICxxSubmodules.cmake 2025-01-11 22:04:45.000000000 +0100 +++ new/which-2.25/cwm4/cmake/AICxxSubmodules.cmake 2026-01-13 21:50:04.000000000 +0100 @@ -3,7 +3,7 @@ # This is a list of all aicxx submodules that exist. # If a submodule X depends on Y it must be on the right, i.e.: Y X. -set(AICxxSubmodules cwds utils xml events threadsafe threadpool evio statefultask fastprimes math cairowindow) +set(AICxxSubmodules cwds utils memory xml events threadsafe threadpool evio statefultask fastprimes math cairowindow) foreach (subdir ${AICxxSubmodules}) get_filename_component(_fullpath "${subdir}" REALPATH) 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/which-2.23/cwm4/cmake/CW_CHECK_BMI2_SUPPORT.cmake new/which-2.25/cwm4/cmake/CW_CHECK_BMI2_SUPPORT.cmake --- old/which-2.23/cwm4/cmake/CW_CHECK_BMI2_SUPPORT.cmake 2025-01-11 22:04:45.000000000 +0100 +++ new/which-2.25/cwm4/cmake/CW_CHECK_BMI2_SUPPORT.cmake 2026-01-13 21:50:04.000000000 +0100 @@ -58,4 +58,3 @@ endif () endif () endfunction() - 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/which-2.23/cwm4/cmake/CW_OPTIONS.cmake new/which-2.25/cwm4/cmake/CW_OPTIONS.cmake --- old/which-2.23/cwm4/cmake/CW_OPTIONS.cmake 2025-01-11 22:04:45.000000000 +0100 +++ new/which-2.25/cwm4/cmake/CW_OPTIONS.cmake 2026-02-25 21:43:43.000000000 +0100 @@ -44,6 +44,7 @@ # CW_BUILD_TYPE_IS_RELWITHDEBUG - true iff CMAKE_BUILD_TYPE = RelWithDebug # CW_BUILD_TYPE_IS_PERF - true iff CMAKE_BUILD_TYPE = Perf # CW_BUILD_TYPE_IS_TRACY - true iff CMAKE_BUILD_TYPE = Tracy +# CW_BUILD_TYPE_IS_NONE - true iff CMAKE_BUILD_TYPE = None # # Usage example, # @@ -73,6 +74,7 @@ set(CW_BUILD_TYPE_IS_RELWITHDEBUG OFF CACHE INTERNAL "") set(CW_BUILD_TYPE_IS_PERF OFF CACHE INTERNAL "") set(CW_BUILD_TYPE_IS_TRACY OFF CACHE INTERNAL "") +set(CW_BUILD_TYPE_IS_NONE OFF CACHE INTERNAL "") unset(OptionEnableDebug) unset(OptionEnableLibcwd) @@ -170,6 +172,8 @@ set(CMAKE_BUILD_TYPE "Perf" CACHE STRING "Build Type" FORCE) elseif ("${BUILD_TYPE_UPPER}" STREQUAL "TRACY") set(CMAKE_BUILD_TYPE "Tracy" CACHE STRING "Build Type" FORCE) +elseif ("${BUILD_TYPE_UPPER}" STREQUAL "NONE") + set(CMAKE_BUILD_TYPE "None" CACHE STRING "Build Type" FORCE) else () message(FATAL_ERROR "Unknown CMAKE_BUILD_TYPE \"${CMAKE_BUILD_TYPE}\".") endif () @@ -199,6 +203,9 @@ if (CMAKE_BUILD_TYPE STREQUAL "Tracy") set(CW_BUILD_TYPE_IS_TRACY ON CACHE INTERNAL "") endif () +if (CMAKE_BUILD_TYPE STREQUAL "None") + set(CW_BUILD_TYPE_IS_NONE ON CACHE INTERNAL "") +endif () message(STATUS "${Option} ${OptionColor}CMAKE_BUILD_TYPE${ColourReset} =\n\t${OptionColorBuildType}${CMAKE_BUILD_TYPE}${ColourReset}") #message(STATUS "${Option} ${OptionColor}CMAKE_BUILD_TYPE${ColourReset} = ${OptionColorBuildType}${CMAKE_BUILD_TYPE}${ColourReset}") 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/which-2.23/cwm4/cmake/CW_SYS_CACHELINE_SIZE.c new/which-2.25/cwm4/cmake/CW_SYS_CACHELINE_SIZE.c --- old/which-2.23/cwm4/cmake/CW_SYS_CACHELINE_SIZE.c 2025-01-11 22:04:45.000000000 +0100 +++ new/which-2.25/cwm4/cmake/CW_SYS_CACHELINE_SIZE.c 2026-01-13 21:50:04.000000000 +0100 @@ -61,5 +61,11 @@ int main() { // No new line! + size_t size = cache_line_size(); + if (!(size > 0 && ((size - 1) & size) == 0)) + { + fprintf(stderr, "CW_SYS_CACHELINE_SIZE: Failed to determine cacheline_size!"); + return 1; + } printf("%lu", cache_line_size()); } 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/which-2.23/cwm4/cmake/StableGitache new/which-2.25/cwm4/cmake/StableGitache --- old/which-2.23/cwm4/cmake/StableGitache 2025-01-11 22:04:45.000000000 +0100 +++ new/which-2.25/cwm4/cmake/StableGitache 2026-01-13 21:50:04.000000000 +0100 @@ -1,10 +1,10 @@ # FetchContent was added to 3.14. -cmake_minimum_required(VERSION 3.14...3.27) +cmake_minimum_required(VERSION 3.14...3.31) include(FetchContent) -# If a local gitache submodule is present then use that rather than downloading one. -if (EXISTS ${CMAKE_CURRENT_LIST_DIR}/gitache/.git) +# If a local gitache directory is present then use that rather than downloading one. +if (EXISTS ${CMAKE_CURRENT_LIST_DIR}/gitache/gateway.cmake) # This will disable the use of the GIT_REPOSITORY/GIT_TAG below, and disable the # FetchContent- download and update step. Instead, use the gitache submodule as-is. set(FETCHCONTENT_SOURCE_DIR_GITACHE "${CMAKE_CURRENT_LIST_DIR}/gitache" CACHE INTERNAL "" FORCE) @@ -13,7 +13,7 @@ FetchContent_Declare( gitache GIT_REPOSITORY "https://github.com/CarloWood/gitache.git" - GIT_TAG "e5ef040c28810ca7a1a5e200268af683440fbd27" # Latest SHA1 of branch "stable". + GIT_TAG "stable" # Latest SHA1 of branch "stable". ) # To enable DEBUG messages, pass -DCMAKE_MESSAGE_LOG_LEVEL=DEBUG to cmake on the command line. 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/which-2.23/cwm4/configure_ac_top.m4 new/which-2.25/cwm4/configure_ac_top.m4 --- old/which-2.23/cwm4/configure_ac_top.m4 2025-01-11 22:04:45.000000000 +0100 +++ new/which-2.25/cwm4/configure_ac_top.m4 2026-02-25 21:45:41.000000000 +0100 @@ -61,9 +61,9 @@ dnl Check if we are the real maintainer. cw_real_maintainer=0 -if test -z "$MAINTAINER_MODE_TRUE" -a -n "$REPOBASE"; then +if test -z "$MAINTAINER_MODE_TRUE" -a -n "$REPOROOT"; then if test "$(echo "$GIT_COMMITTER_EMAIL" | md5sum | cut -d \ -f 1)" = dnl - "$(sed -n -e 's/.*MAINTAINER_HASH=//p' "$REPOBASE/autogen.sh")"; then + "$(sed -n -e 's/.*MAINTAINER_HASH=//p' "$REPOROOT/autogen.sh")"; then cw_real_maintainer=1 fi fi 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/which-2.23/maintMakefile.in new/which-2.25/maintMakefile.in --- old/which-2.23/maintMakefile.in 2025-02-01 19:49:59.000000000 +0100 +++ new/which-2.25/maintMakefile.in 2026-05-21 16:11:34.000000000 +0200 @@ -52,7 +52,6 @@ AUTHOR=Carlo Wood <[email protected]> TAG:=${shell echo "V@VERSION@" | sed -e 's/\./_/g'} PREVTAG:=${shell test -f $(srcdir)/.prevtag && cat $(srcdir)/.prevtag} -CVSREADACCESS:=${shell if test -f $(srcdir)/CVS/Entries; then echo "yes"; else echo "no"; fi} WHICHTEST:=$(shell realpath "$(srcdir)/test/whichtest") info_TEXINFOS = which.texi @@ -92,6 +91,7 @@ gpg --clearsign @PACKAGE@-@[email protected] (cd $(srcdir) && git tag --force $(TAG)) @echo "*** To upload run:" + @echo "$$ cd $$BUILDDIR" @echo "$$ ncftpput ftp-upload.gnu.org /incoming/ftp @PACKAGE@-@[email protected] @PACKAGE@-@[email protected] @PACKAGE@-@[email protected]" @echo "$$ echo \"$(TAG)\" > $(srcdir)/.prevtag" 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/which-2.23/missing new/which-2.25/missing --- old/which-2.23/missing 2024-07-20 11:26:35.000000000 +0200 +++ new/which-2.25/missing 2025-07-12 14:12:09.000000000 +0200 @@ -1,11 +1,11 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU and other programs. -scriptversion=2024-06-07.14; # UTC +scriptversion=2025-06-18.21; # UTC # shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells -# Copyright (C) 1996-2024 Free Software Foundation, Inc. +# Copyright (C) 1996-2025 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <[email protected]>, 1996. # This program is free software; you can redistribute it and/or modify @@ -228,9 +228,9 @@ exit $st # Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-format: "%Y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: 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/which-2.23/stamp-vti new/which-2.25/stamp-vti --- old/which-2.23/stamp-vti 2025-02-01 19:54:02.000000000 +0100 +++ new/which-2.25/stamp-vti 2026-05-21 18:01:23.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 1 February 2025 -@set UPDATED-MONTH February 2025 -@set EDITION 2.23 -@set VERSION 2.23 +@set UPDATED 15 April 2025 +@set UPDATED-MONTH April 2025 +@set EDITION 2.25 +@set VERSION 2.25 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/which-2.23/tilde.c new/which-2.25/tilde.c --- old/which-2.23/tilde.c 2025-02-01 19:17:56.000000000 +0100 +++ new/which-2.25/tilde.c 2026-05-21 16:11:34.000000000 +0200 @@ -189,10 +189,8 @@ int result_size, result_index; result_index = result_size = 0; - if (result = strchr(string, '~')) - result = (char *) xmalloc(result_size = (strlen(string) + 16)); - else - result = (char *) xmalloc(result_size = (strlen(string) + 1)); + int offset = strchr(string, '~') ? 16 : 1; + result = (char *) xmalloc(result_size = (strlen(string) + offset)); /* Scan through STRING expanding tildes as we come to them. */ while (1) 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/which-2.23/version.texi new/which-2.25/version.texi --- old/which-2.23/version.texi 2025-02-01 19:54:02.000000000 +0100 +++ new/which-2.25/version.texi 2026-05-21 18:01:23.000000000 +0200 @@ -1,4 +1,4 @@ -@set UPDATED 1 February 2025 -@set UPDATED-MONTH February 2025 -@set EDITION 2.23 -@set VERSION 2.23 +@set UPDATED 15 April 2025 +@set UPDATED-MONTH April 2025 +@set EDITION 2.25 +@set VERSION 2.25 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/which-2.23/which.1 new/which-2.25/which.1 --- old/which-2.23/which.1 2025-02-01 19:54:02.000000000 +0100 +++ new/which-2.25/which.1 2026-05-21 18:01:23.000000000 +0200 @@ -60,7 +60,7 @@ function for which itself. For example: .br .B -which() { declare -f | which --read-functions $@ } +which() { declare -f | which --read-functions "$@" } .br export -f which\fR .TP @@ -110,7 +110,7 @@ .na which () { - (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@ + (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot "$@" } export -f which .in -5 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/which-2.23/which.c new/which-2.25/which.c --- old/which-2.23/which.c 2025-02-01 19:49:59.000000000 +0100 +++ new/which-2.25/which.c 2026-05-21 16:11:34.000000000 +0200 @@ -1,6 +1,6 @@ /* * which v2.x -- print full path of executables - * Copyright (C) 1999, 2003, 2007, 2008 Carlo Wood <[email protected]> + * Copyright (C) 1999, 2003, 2007, 2008, 2024, 2026 Carlo Wood <[email protected]> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -65,7 +65,7 @@ static void print_version(void) { - fprintf(stdout, "GNU which v" VERSION ", Copyright (C) 1999 - 2025 Carlo Wood.\n"); + fprintf(stdout, "GNU which v" VERSION ", Copyright (C) 1999 - 2026 Carlo Wood.\n"); fprintf(stdout, "GNU which comes with ABSOLUTELY NO WARRANTY;\n"); fprintf(stdout, "This program is free software; your freedom to use, change\n"); fprintf(stdout, "and distribute this program is protected by the GPL.\n"); @@ -219,11 +219,13 @@ if (cwdlen) return; - if (!getcwd(cwd, sizeof(cwd))) + if (!getcwd(cwd, sizeof(cwd) - 1)) { const char *pwd = getenv("PWD"); - if (pwd && strlen(pwd) < sizeof(cwd)) + if (pwd && strlen(pwd) < sizeof(cwd) - 1) strcpy(cwd, pwd); + else + cwd[0] = '\0'; } if (!IS_ABSOLUTE(cwd)) @@ -243,7 +245,7 @@ static char *path_clean_up(const char *path) { - static char result[PATH_MAX]; + static char result[PATH_MAX + 1]; const char *p1 = path; char *p2 = result; @@ -265,7 +267,14 @@ * See http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11 */ if (!saw_slash || !IS_DIRSEP(*p1) || (p1 == path + 1 && !IS_DIRSEP(p1[1]))) + { + if (p2 >= result + sizeof(result) - 1) + { + fprintf(stderr, "Can't create full path\n"); + exit(-1); + } *p2++ = *p1; + } if (saw_slash_dot && (IS_DIRSEP(*p1))) p2 -= 2; if (saw_slash_dot_dot && (IS_DIRSEP(*p1))) @@ -572,7 +581,7 @@ strncpy(home, h, sizeof(home)); home[sizeof(home) - 1] = 0; homelen = strlen(home); - if (!IS_DIRSEP(home[homelen - 1]) && homelen < sizeof(home) - 1) + if (homelen == 0 || !IS_DIRSEP(home[homelen - 1]) && homelen < sizeof(home) - 1) { home[homelen] = DIR_SEPARATOR; home[homelen + 1] = '\0'; @@ -625,6 +634,10 @@ // { // body // } + // Defensive: a line whose first byte is '\0' (or that is empty) makes + // `buf + strlen(buf) - 1` underflow below the start of `buf`. Skip it. + if (buf[0] == '\0') + continue; char *p = buf + strlen(buf) - 1; while (isspace(*p) && p > buf + 2) --p; 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/which-2.23/which.info new/which-2.25/which.info --- old/which-2.23/which.info 2025-02-01 19:56:07.000000000 +0100 +++ new/which-2.25/which.info 2026-05-21 18:01:23.000000000 +0200 @@ -1,4 +1,4 @@ -This is which.info, produced by makeinfo version 7.1.1 from which.texi. +This is which.info, produced by makeinfo version 7.3 from which.texi. INFO-DIR-SECTION System administration START-INFO-DIR-ENTRY @@ -26,7 +26,7 @@ The ‘which’ program shows the full path of (shell) commands. -This file documents ‘which’ version 2.23, updated 1 February 2025. +This file documents ‘which’ version 2.25, updated 15 April 2025. * Menu: @@ -92,7 +92,7 @@ Read shell function definitions from stdin, reporting matching ones on stdout. This is useful in combination with using a shell function for which itself. For example: - ‘which() { declare -f | which --read-functions $@ } + ‘which() { declare -f | which --read-functions "$@" } export -f which’ ‘--skip-functions’ @@ -148,7 +148,7 @@ which () { - (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@ + (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot "$@" } export -f which @@ -219,15 +219,14 @@ * Return value of which: Return Value. (line 6) * Synopsis: Invoking Which. (line 6) - Tag Table: -Node: Top630 -Node: Which Program1305 -Node: Invoking Which1813 -Node: Option Summary2089 -Node: Return Value4090 -Node: Example4307 +Node: Top628 +Node: Which Program1301 +Node: Invoking Which1809 +Node: Option Summary2085 +Node: Return Value4088 +Node: Example4305 Node: Bugs5044 Node: See Also5399 Node: Index5511 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/which-2.23/which.texi new/which-2.25/which.texi --- old/which-2.23/which.texi 2025-02-01 19:17:56.000000000 +0100 +++ new/which-2.25/which.texi 2025-04-15 15:15:30.000000000 +0200 @@ -157,7 +157,7 @@ Read shell function definitions from stdin, reporting matching ones on stdout. This is useful in combination with using a shell function for which itself. For example:@* -@code{which() @{ declare -f | which --read-functions $@@ @}@*export -f which} +@code{which() @{ declare -f | which --read-functions "$@@" @}@*export -f which} @cindex @option{--skip-functions} @item --skip-functions @@ -229,7 +229,7 @@ @group which () @{ - (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@@ + (alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot "$@@" @} export -f which @end group
