Compare commits

...
Sign in to create a new pull request.

11 commits

Author SHA1 Message Date
Fedora Release Engineering
ac38d264ed Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 20:24:07 +00:00
Lukáš Zaoral
c68f9f566f
tests: migrate from STI to TMT
Related: https://fedoraproject.org/wiki/Changes/DisableSTI
2025-07-07 12:54:06 +02:00
Than Ngo
d6c3c6e517 Add a check to ensure that /proc/$$/exe can be read 2025-06-18 17:36:05 +02:00
Than Ngo
227e833d53 Fixed rhbz#2343361, update to 2.23 2025-02-03 15:49:08 +01:00
Than Ngo
7868f048fb Fixed rhbz#2343113, regression 2025-02-01 22:38:21 +01:00
Than Ngo
eaa063e13e Add BR on gcc-c++ 2025-01-27 11:16:27 +01:00
Than Ngo
af5b873272 Fixed rhbz#2342020, update to 2.22 2025-01-27 10:35:14 +01:00
Fedora Release Engineering
01febed462 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-19 14:58:54 +00:00
Fedora Release Engineering
f9cdb1c078 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-20 09:18:36 +00:00
Fedora Release Engineering
34aba6f9e4 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-27 08:43:54 +00:00
Fedora Release Engineering
1f2a5801fc Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-22 18:10:40 +00:00
15 changed files with 73 additions and 395 deletions

1
.fmf/version Normal file
View file

@ -0,0 +1 @@
1

2
.gitignore vendored
View file

@ -3,3 +3,5 @@ which-2.18.tar.gz
which-2.19.tar.gz
/which-2.20.tar.gz
/which-2.21.tar.gz
/which-2.22.tar.gz
/which-2.23.tar.gz

5
plans/ci.fmf Normal file
View file

@ -0,0 +1,5 @@
summary: Basic smoke test
discover:
how: fmf
execute:
how: tmt

View file

@ -1 +1 @@
097ff1a324ae02e0a3b0369f07a7544a which-2.21.tar.gz
SHA512 (which-2.23.tar.gz) = 738807f79e8cfc5967541a28ae7021247c04c4177279f09be2c19c069af450a7e3b19baf9079fe5569b25b4630bb400be242a123647e52c9fe54f0ad007317bf

View file

@ -1,261 +0,0 @@
posix on
:: [ 12:25:31 ] :: [ WARNING ] :: POSIX mode detected and switched off
:: [ 12:25:31 ] :: [ WARNING ] :: POSIX mode detected and switched off
:: [ 12:25:31 ] :: [ WARNING ] :: Please fix your test to have /bin/bash shebang
:: [ 12:25:31 ] :: [ WARNING ] :: Please fix your test to have /bin/bash shebang
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: Setup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
which-2.21-4.fc27.x86_64
:: [ PASS ] :: Checking for the presence of which rpm
:: [ 12:25:31 ] :: Package versions:
:: [ 12:25:31 ] :: Package versions:
:: [ 12:25:31 ] :: which-2.21-4.fc27.x86_64
:: [ 12:25:31 ] :: which-2.21-4.fc27.x86_64
:: [ BEGIN ] :: Creating tmp directory :: actually running 'TmpDir=$(mktemp -d)'
:: [ BEGIN ] :: Creating tmp directory :: actually running 'TmpDir=$(mktemp -d)'
:: [ PASS ] :: Creating tmp directory (Expected 0, got 0)
:: [ BEGIN ] :: Running 'pushd /tmp/tmp.cVaYqMMJWL'
:: [ BEGIN ] :: Running 'pushd /tmp/tmp.cVaYqMMJWL'
/tmp/tmp.cVaYqMMJWL /usr/local/bin/basic-functionality-test
:: [ PASS ] :: Command 'pushd /tmp/tmp.cVaYqMMJWL' (Expected 0, got 0)
:: [ BEGIN ] :: Running 'cp -p /bin/true /tmp/tmp.cVaYqMMJWL'
:: [ BEGIN ] :: Running 'cp -p /bin/true /tmp/tmp.cVaYqMMJWL'
:: [ PASS ] :: Command 'cp -p /bin/true /tmp/tmp.cVaYqMMJWL' (Expected 0, got 0)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test --version
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ BEGIN ] :: Running 'VERSION=$( rpm -q --qf '%{VERSION}' which )'
:: [ BEGIN ] :: Running 'VERSION=$( rpm -q --qf '%{VERSION}' which )'
:: [ PASS ] :: Command 'VERSION=$( rpm -q --qf '%{VERSION}' which )' (Expected 0, got 0)
:: [ BEGIN ] :: Running 'which --version'
:: [ BEGIN ] :: Running 'which --version'
GNU which v2.21, Copyright (C) 1999 - 2015 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.
:: [ PASS ] :: Command 'which --version' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.0WBy8LPp' should contain 'GNU which v2.21'
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test locating the bash binary
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ BEGIN ] :: Running 'which bash'
:: [ BEGIN ] :: Running 'which bash'
/bin/bash
:: [ PASS ] :: Command 'which bash' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.eBwKSEjp' should contain '/bin/bash'
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test an alias
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ BEGIN ] :: Running 'echo 'alias foo=bar' > bashrc'
:: [ BEGIN ] :: Running 'echo 'alias foo=bar' > bashrc'
:: [ PASS ] :: Command 'echo 'alias foo=bar' > bashrc' (Expected 0, got 0)
:: [ BEGIN ] :: Running 'echo -e 'alias foo=true
which foo' | bash -i'
:: [ BEGIN ] :: Running 'echo -e 'alias foo=true
which foo' | bash -i'
[root@localhost tmp.cVaYqMMJWL]# alias foo=true
[root@localhost tmp.cVaYqMMJWL]# which foo
]0;root@localhost:/tmp/tmp.cVaYqMMJWL]0;root@localhost:/tmp/tmp.cVaYqMMJWLalias foo='true'
/bin/true
[root@localhost tmp.cVaYqMMJWL]# exit
]0;root@localhost:/tmp/tmp.cVaYqMMJWL:: [ PASS ] :: Command 'echo -e 'alias foo=true\nwhich foo' | bash -i' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.W7TNYyLv' should contain 'alias foo='true''
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.W7TNYyLv' should contain '/bin/true'
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test non existing command
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ BEGIN ] :: Running 'which foobar'
:: [ BEGIN ] :: Running 'which foobar'
which: no foobar in (/sbin:/bin:/usr/sbin:/usr/bin)
:: [ PASS ] :: Command 'which foobar' (Expected 1, got 1)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.qmmfZVfo' should contain 'no foobar in (/sbin:/bin:/usr/sbin:/usr/bin)'
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test with customized PATH
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ BEGIN ] :: Running 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which true''
:: [ BEGIN ] :: Running 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which true''
/tmp/tmp.cVaYqMMJWL/true
:: [ PASS ] :: Command 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which true'' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.1ondAtov' should contain '/tmp/tmp.cVaYqMMJWL/true'
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test options -a / --all
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ BEGIN ] :: Running 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which -a true''
:: [ BEGIN ] :: Running 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which -a true''
/tmp/tmp.cVaYqMMJWL/true
/bin/true
/usr/bin/true
:: [ PASS ] :: Command 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which -a true'' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.9pOxwvyK' should contain '/tmp/tmp.cVaYqMMJWL/true'
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.9pOxwvyK' should contain '/bin/true'
:: [ BEGIN ] :: Running 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which --all true''
:: [ BEGIN ] :: Running 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which --all true''
/tmp/tmp.cVaYqMMJWL/true
/bin/true
/usr/bin/true
:: [ PASS ] :: Command 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which --all true'' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.SMe8bSin' should contain '/tmp/tmp.cVaYqMMJWL/true'
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.SMe8bSin' should contain '/bin/true'
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: Cleanup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ BEGIN ] :: Running 'popd'
:: [ BEGIN ] :: Running 'popd'
/usr/local/bin/basic-functionality-test
:: [ PASS ] :: Command 'popd' (Expected 0, got 0)
:: [ BEGIN ] :: Removing tmp directory :: actually running 'rm -r /tmp/tmp.cVaYqMMJWL'
:: [ BEGIN ] :: Removing tmp directory :: actually running 'rm -r /tmp/tmp.cVaYqMMJWL'
:: [ PASS ] :: Removing tmp directory (Expected 0, got 0)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: TEST PROTOCOL
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: Package : unknown
:: [ LOG ] :: Installed : which-2.21-4.fc27.x86_64
:: [ LOG ] :: beakerlib RPM : beakerlib-1.16-4.fc27
:: [ LOG ] :: bl-redhat RPM : not installed
:: [ LOG ] :: Test started : 2017-12-11 12:25:31 EET
:: [ LOG ] :: Test finished : 2017-12-11 12:25:34 EET
:: [ LOG ] :: Test name : basic-functionality-test
:: [ LOG ] :: Distro : Fedora release 27 (Twenty Seven)
:: [ LOG ] :: Hostname : localhost.localdomain
:: [ LOG ] :: Architecture : x86_64
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: Test description
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PURPOSE of /CoreOS/which/Sanity/basic-functionality-test
Description: tests basic functionality
Author: Karel Srot <ksrot@redhat.com>
tests following scenarios:
* test --version
* test locating the bash binary
* test an alias
* test non existing command
* test with customized PATH
* test options -a / --all
:: [ WARNING ] :: POSIX mode detected and switched off
:: [ WARNING ] :: Please fix your test to have /bin/bash shebang
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: Setup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ PASS ] :: Checking for the presence of which rpm
:: [ LOG ] :: Package versions:
:: [ LOG ] :: which-2.21-4.fc27.x86_64
:: [ PASS ] :: Creating tmp directory (Expected 0, got 0)
:: [ PASS ] :: Command 'pushd /tmp/tmp.cVaYqMMJWL' (Expected 0, got 0)
:: [ PASS ] :: Command 'cp -p /bin/true /tmp/tmp.cVaYqMMJWL' (Expected 0, got 0)
:: [ LOG ] :: Duration: 1s
:: [ LOG ] :: Assertions: 4 good, 0 bad
:: [ PASS ] :: RESULT: Setup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test --version
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ PASS ] :: Command 'VERSION=$( rpm -q --qf '%{VERSION}' which )' (Expected 0, got 0)
:: [ PASS ] :: Command 'which --version' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.0WBy8LPp' should contain 'GNU which v2.21'
:: [ LOG ] :: Duration: 0s
:: [ LOG ] :: Assertions: 3 good, 0 bad
:: [ PASS ] :: RESULT: test --version
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test locating the bash binary
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ PASS ] :: Command 'which bash' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.eBwKSEjp' should contain '/bin/bash'
:: [ LOG ] :: Duration: 0s
:: [ LOG ] :: Assertions: 2 good, 0 bad
:: [ PASS ] :: RESULT: test locating the bash binary
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test an alias
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ PASS ] :: Command 'echo 'alias foo=bar' > bashrc' (Expected 0, got 0)
:: [ PASS ] :: Command 'echo -e 'alias foo=true\nwhich foo' | bash -i' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.W7TNYyLv' should contain 'alias foo='true''
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.W7TNYyLv' should contain '/bin/true'
:: [ LOG ] :: Duration: 0s
:: [ LOG ] :: Assertions: 4 good, 0 bad
:: [ PASS ] :: RESULT: test an alias
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test non existing command
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ PASS ] :: Command 'which foobar' (Expected 1, got 1)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.qmmfZVfo' should contain 'no foobar in (/sbin:/bin:/usr/sbin:/usr/bin)'
:: [ LOG ] :: Duration: 0s
:: [ LOG ] :: Assertions: 2 good, 0 bad
:: [ PASS ] :: RESULT: test non existing command
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test with customized PATH
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ PASS ] :: Command 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which true'' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.1ondAtov' should contain '/tmp/tmp.cVaYqMMJWL/true'
:: [ LOG ] :: Duration: 0s
:: [ LOG ] :: Assertions: 2 good, 0 bad
:: [ PASS ] :: RESULT: test with customized PATH
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: test options -a / --all
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ PASS ] :: Command 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which -a true'' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.9pOxwvyK' should contain '/tmp/tmp.cVaYqMMJWL/true'
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.9pOxwvyK' should contain '/bin/true'
:: [ PASS ] :: Command 'bash -c 'export PATH=/tmp/tmp.cVaYqMMJWL:/sbin:/bin:/usr/sbin:/usr/bin; which --all true'' (Expected 0, got 0)
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.SMe8bSin' should contain '/tmp/tmp.cVaYqMMJWL/true'
:: [ PASS ] :: File '/var/tmp/rlRun_LOG.SMe8bSin' should contain '/bin/true'
:: [ LOG ] :: Duration: 1s
:: [ LOG ] :: Assertions: 6 good, 0 bad
:: [ PASS ] :: RESULT: test options -a / --all
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: Cleanup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ PASS ] :: Command 'popd' (Expected 0, got 0)
:: [ PASS ] :: Removing tmp directory (Expected 0, got 0)
:: [ LOG ] :: Duration: 0s
:: [ LOG ] :: Assertions: 2 good, 0 bad
:: [ PASS ] :: RESULT: Cleanup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: basic-functionality-test
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ LOG ] :: Phases: 8 good, 0 bad
:: [ PASS ] :: RESULT: basic-functionality-test
:: [ 12:25:34 ] :: JOURNAL XML: /var/tmp/beakerlib-3xyUzEH/journal.xml
:: [ 12:25:34 ] :: JOURNAL XML: /var/tmp/beakerlib-3xyUzEH/journal.xml
:: [ 12:25:34 ] :: JOURNAL TXT: /var/tmp/beakerlib-3xyUzEH/journal.txt
:: [ 12:25:34 ] :: JOURNAL TXT: /var/tmp/beakerlib-3xyUzEH/journal.txt

View file

@ -1 +0,0 @@
PASS basic-functionality-test

View file

@ -0,0 +1,14 @@
summary: tests basic functionality
description: "tests following scenarios:\n * test --version\n * test locating the
bash binary\n * test an alias\n * test non existing command\n * test with customized
PATH\n * test options -a / --all\n"
contact: Karel Srot <ksrot@redhat.com>
component:
- which
test: ./runtest.sh
framework: beakerlib
recommend:
- which
duration: 5m
extra-summary: /CoreOS/which/Sanity/basic-functionality-test
extra-task: /CoreOS/which/Sanity/basic-functionality-test

View file

@ -27,7 +27,6 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/bin/rhts-environment.sh || exit 1
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="which"

View file

@ -1 +0,0 @@
localhost

View file

@ -1,13 +0,0 @@
---
# Run tests in all contexts
- hosts: localhost
tags:
- classic
- container
- atomic
roles:
- role: standard-test-beakerlib
tests:
- basic-functionality-test
required_packages:
- which

View file

@ -1,65 +0,0 @@
diff -up which-2.21/tilde/tilde.c.coverity which-2.21/tilde/tilde.c
--- which-2.21/tilde/tilde.c.coverity 2008-01-16 18:51:57.000000000 +0100
+++ which-2.21/tilde/tilde.c 2021-03-21 11:43:00.338160051 +0100
@@ -193,10 +193,10 @@ tilde_expand (string)
const char *string;
{
char *result;
- int result_size, result_index;
+ int result_size = 0, result_index = 0;
- result_index = result_size = 0;
- if (result = strchr (string, '~'))
+ result = strchr (string, '~');
+ if (result)
result = (char *)xmalloc (result_size = (strlen (string) + 16));
else
result = (char *)xmalloc (result_size = (strlen (string) + 1));
@@ -270,7 +270,7 @@ isolate_tilde_prefix (fname, lenp)
char *ret;
int i;
- ret = (char *)xmalloc (strlen (fname));
+ ret = (char *)xmalloc (strlen (fname) + 1);
#if defined (__MSDOS__)
for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++)
#else
diff -up which-2.21/which.c.coverity which-2.21/which.c
--- which-2.21/which.c.coverity 2015-03-19 17:50:24.000000000 +0100
+++ which-2.21/which.c 2021-03-21 12:19:31.289160885 +0100
@@ -76,16 +76,16 @@ static int skip_functions = 0, read_func
static char *find_command_in_path(const char *name, const char *path_list, int *path_index)
{
- char *found = NULL, *full_path;
+ char *found = NULL, *full_path = NULL;
int status, name_len;
name_len = strlen(name);
+ char *p;
if (!absolute_program(name))
absolute_path_given = 0;
else
{
- char *p;
absolute_path_given = 1;
if (abs_path)
@@ -159,6 +159,7 @@ static char *find_command_in_path(const
free(full_path);
}
+ name = NULL; p = NULL; path_list = NULL;
return (found);
}
@@ -540,7 +541,7 @@ int main(int argc, char *argv[])
int function_start_type = 0;
if (read_alias || read_functions)
{
- char buf[1024];
+ char buf[1024] = {};
int processing_aliases = read_alias;
if (isatty(0))

View file

@ -1,46 +0,0 @@
diff -up which-2.21/which.c.me which-2.21/which.c
--- which-2.21/which.c.me 2022-11-07 13:11:03.580798950 +0100
+++ which-2.21/which.c 2022-11-07 15:45:41.366085798 +0100
@@ -19,10 +19,15 @@
#include "sys.h"
#include <stdio.h>
#include <ctype.h>
+#include <limits.h>
#include "getopt.h"
#include "tilde/tilde.h"
#include "bash.h"
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
+
static const char *progname;
static void print_usage(FILE *out)
@@ -63,7 +68,7 @@ static void print_fail(const char *name,
fprintf(stderr, "%s: no %s in (%s)\n", progname, name, path_list);
}
-static char home[256];
+static char home[PATH_MAX];
static size_t homelen = 0;
static int absolute_path_given;
@@ -163,7 +168,7 @@ static char *find_command_in_path(const
return (found);
}
-static char cwd[256];
+static char cwd[PATH_MAX];
static size_t cwdlen;
static void get_current_working_directory(void)
@@ -195,7 +200,7 @@ static void get_current_working_director
static char *path_clean_up(const char *path)
{
- static char result[256];
+ static char result[PATH_MAX];
const char *p1 = path;
char *p2 = result;

13
which-2.21-warning.patch Normal file
View file

@ -0,0 +1,13 @@
diff -up which-2.22/tilde.c.me which-2.22/tilde.c
--- which-2.22/tilde.c.me 2025-01-27 10:30:39.731725763 +0100
+++ which-2.22/tilde.c 2025-01-27 10:32:11.158379146 +0100
@@ -189,7 +189,8 @@ char *tilde_expand(const char *string)
int result_size, result_index;
result_index = result_size = 0;
- if (result = strchr(string, '~'))
+ result = strchr(string, '~');
+ if (result)
result = (char *) xmalloc(result_size = (strlen(string) + 16));
else
result = (char *) xmalloc(result_size = (strlen(string) + 1));

View file

@ -2,18 +2,17 @@
Summary: Displays where a particular program in your path is located
Name: which
Version: 2.21
Release: 39%{?dist}
Version: 2.23
Release: 3%{?dist}
License: GPL-3.0-only
Source0: http://ftp.gnu.org/gnu/which/%{name}-%{version}.tar.gz
Source1: which2.sh
Source2: which2.csh
Patch0: which-2.21-coverity-fixes.patch
Patch1: which-2.21-path_max.patch
Patch0: which-2.21-warning.patch
Url: https://savannah.gnu.org/projects/which/
Requires: coreutils
BuildRequires: make
BuildRequires: gcc
BuildRequires: gcc gcc-c++
BuildRequires: readline-devel
%description
@ -47,6 +46,33 @@ rm -f $RPM_BUILD_ROOT%{_infodir}/dir
%{_mandir}/man1/which.1*
%changelog
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.23-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Wed Jun 18 2025 Than Ngo <than@redhat.com> - 2.23-2
- Add a check to ensure that /proc/$$/exe can be read
* Mon Feb 03 2025 Than Ngo <than@redhat.com> - 2.23-1
- Fixed rhbz#2343361, update to 2.23
* Sat Feb 01 2025 Than Ngo <than@redhat.com> - 2.22-2
- Fixed rhbz#2343113, regression
* Mon Jan 27 2025 Than Ngo <than@redhat.com> - 2.22-1
- Fixed rhbz#2342020, update to 2.22
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.21-43
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.21-42
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.21-41
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.21-40
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Wed Mar 08 2023 Than Ngo <than@redhat.com> - 2.21-39
- fixed #2175953, enable which2 alias

View file

@ -1,7 +1,12 @@
# shellcheck shell=sh
# Initialization script for bash, sh, mksh and ksh
case "$(basename $(readlink /proc/$$/exe))" in
if [ -r /proc/$$/exe ]; then
SHELLNAME=$(basename $(readlink /proc/$$/exe))
else
SHELLNAME="unknown"
fi
case "$SHELLNAME" in
*ksh*|zsh)
alias which='alias | /usr/bin/which --tty-only --read-alias --show-tilde --show-dot'
;;