Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openafs for openSUSE:Factory checked in at 2022-04-20 16:57:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openafs (Old) and /work/SRC/openSUSE:Factory/.openafs.new.1941 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openafs" Wed Apr 20 16:57:14 2022 rev:33 rq:970995 version:1.8.8.1 Changes: -------- --- /work/SRC/openSUSE:Factory/openafs/openafs.changes 2022-01-24 23:09:39.338896726 +0100 +++ /work/SRC/openSUSE:Factory/.openafs.new.1941/openafs.changes 2022-04-20 16:57:42.962644683 +0200 @@ -1,0 +2,20 @@ +Wed Apr 20 06:24:41 UTC 2022 - Christof Hanke <[email protected]> + +- apply patches marked for upcoming release: + * kernel 5.17: a714e86.diff and 449d1fa.diff + * gcc-11: gcc-11.diff + +------------------------------------------------------------------- +Mon Mar 28 20:27:18 UTC 2022 - Christof Hanke <[email protected]> + +- do not create client-package without KMP + +------------------------------------------------------------------- +Mon Feb 21 10:48:51 UTC 2022 - Christof Hanke <[email protected]> + +- remove patch dir_layout.patch + this can be done via environment-variables +- replace openafs-1.8.x.ncurses6.patch with patch 4cf7a9a.diff. + 4cf7a9a.diff is coming from upstream and will be incorporated at some point. + +------------------------------------------------------------------- Old: ---- dir_layout.patch openafs-1.8.x.ncurses6.patch New: ---- 449d1fa.diff 4cf7a9a.diff a714e86.diff gcc-11.diff kmp_only.files ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openafs.spec ++++++ --- /var/tmp/diff_new_pack.SAbUjm/_old 2022-04-20 16:57:45.298646866 +0200 +++ /var/tmp/diff_new_pack.SAbUjm/_new 2022-04-20 16:57:45.302646869 +0200 @@ -100,16 +100,21 @@ Source56: openafs.CellAlias Source57: openafs.ThisCell Source58: openafs.cacheinfo +Source98: kmp_only.files Source99: openafs.changes -# PATCH-SUSE-SPECIFIC use proper directory layout -Patch3: dir_layout.patch +# PATCH-FIX-UPSTREAM KMP build +Patch1: a714e86.diff +Patch2: 449d1fa.diff +# PATCH-FIX-UPSTREAM use gcc-11 +Patch3: gcc-11.diff # PATCH-FIX-UPSTREAM make configure detect ncurses 6 correctly -Patch4: openafs-1.8.x.ncurses6.patch +Patch4: 4cf7a9a.diff # # GENERAL BuildRequires and Requires # +BuildRequires: autoconf-archive BuildRequires: automake BuildRequires: bison BuildRequires: coreutils @@ -124,15 +129,9 @@ BuildRequires: libtirpc-devel BuildRequires: libtool BuildRequires: ncurses-devel -%if 0%{?suse_version} < 1120 -BuildRequires: perl-macros -%endif BuildRequires: pkg-config BuildRequires: swig -%if 0%{?suse_version} < 1210 -Requires(post): %insserv_prereq -%endif Requires(post): %fillup_prereq %if %{build_kernel_modules} @@ -268,6 +267,7 @@ This client is using the EXPERIMENTAL FUSE interface on LINUX. It does not offer authentication etc. +%if %{build_kernel_modules} %package client Summary: OpenAFS File System Client Group: System/Filesystems @@ -286,7 +286,7 @@ In addition, among its features are authentication, encryption, caching, disconnected operations, replication for higher availability and load balancing, and ACLs. This package contains the OpenAFS client. - +%endif %prep @@ -319,6 +319,8 @@ done %setup -q -n openafs-%{upstream_version} -T -b 0 -b 1 +%patch1 -p1 +%patch2 -p1 %patch3 -p1 %patch4 -p1 @@ -358,7 +360,10 @@ export KRB5LIBS='-lcom_err -lkrb5' export PATH_KRB5_CONFIG=%{krb5_config} - +export afsdbdir='/var/lib/openafs/db' +export afslocaldir='/var/lib/openafs' +export afslogsdir='/var/log/openafs' +export afsdbdir='/var/lib/openafs/db' %configure \ --disable-transarc-paths \ --disable-pam \ @@ -393,7 +398,8 @@ make popd done -%endif # build_kernel_modules +%endif +# build_kernel_modules %install @@ -424,11 +430,15 @@ # # client -cp -a src/afsd/CellServDB %{buildroot}/%{viceetcdir}/CellServDB -cp -a %{S:55} %{buildroot}/%{viceetcdir}/SuidCells +# also used by others cp -a %{S:56} %{buildroot}/%{viceetcdir}/CellAlias cp -a %{S:57} %{buildroot}/%{viceetcdir}/ThisCell +cp -a src/afsd/CellServDB %{buildroot}/%{viceetcdir}/CellServDB +cp -a %{S:55} %{buildroot}/%{viceetcdir}/SuidCells cp -a %{S:58} %{buildroot}/%{viceetcdir}/cacheinfo + +# kmp-only +%if %{build_kernel_modules} cp -a src/afs/afszcm.cat %{buildroot}%{_datadir}/openafs/C install -m 644 %{S:27} %{buildroot}/%{_fillupdir}/sysconfig.openafs-client %if 0%{?sle_version} > 150000 @@ -437,9 +447,11 @@ install -m 644 %{S:23} %{buildroot}/%_unitdir %endif ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcopenafs-client +%endif # # fuse client package + install -m 644 %{S:29} %{buildroot}/%{_fillupdir}/sysconfig.openafs-fuse-client install -m 644 %{S:26} %{buildroot}/%_unitdir ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcopenafs-fuse-client @@ -475,6 +487,7 @@ cp -a %{S:10} README.SUSE cp -a %{S:18} RELNOTES cp -a %{S:19} ChangeLog + mkdir -p %{buildroot}/etc/ld.so.conf.d echo %{_libdir}/openafs > %{buildroot}/etc/ld.so.conf.d/openafs.conf @@ -533,7 +546,7 @@ # we supposedly don't need this on linux rm %{buildroot}/%{_sbindir}/rmtsysd -%if %{build_authlibs} == 0 +%if ! %{build_authlibs} rm %{buildroot}/%{_libdir}/libafsauthent.so.* rm %{buildroot}/%{_libdir}/libafsrpc.so.* rm %{buildroot}/%{_libdir}/libkopenafs.so.* @@ -541,6 +554,11 @@ rm %{buildroot}/%{_libdir}/libafsrpc.so rm %{buildroot}/%{_libdir}/libkopenafs.so %endif +%if ! %{build_kernel_modules} +for f in $(cat %{S:98}); do + rm -f %{buildroot}/$f +done +%endif # remove all static libraries find %{buildroot} -type f -name "*.a" -delete @@ -628,6 +646,7 @@ # # client +%if %{build_kernel_modules} %pre client %service_add_pre openafs-client.service @@ -665,6 +684,7 @@ fi /sbin/ldconfig %service_del_postun openafs-client.service +%endif # # server @@ -801,6 +821,7 @@ %{_fillupdir}/sysconfig.openafs-fuse-client %{vicecachedir} +%if %{build_kernel_modules} %files client %defattr(-,root,root) %{_bindir}/fs @@ -846,6 +867,7 @@ %{_prefix}/lib/firewalld/services/afs3-callback.xml %{_prefix}/lib/firewalld/services/afs3-rmtsys.xml %endif +%endif %files server %defattr(-,root,root) ++++++ 449d1fa.diff ++++++ >From 449d1faf87e2841e80be38cf2b4a5cf5ff4df2d8 Mon Sep 17 00:00:00 2001 From: Cheyenne Wills <[email protected]> Date: Fri, 28 Jan 2022 14:10:46 -0700 Subject: [PATCH] Linux-5.17: Kernel build uses -Wcast-function-type The linux 5.17 commit: "Makefile: Enable -Wcast-function-type" (552a23a0) added the -Wcast-function-type compiler flag for kernel module builds. This change catches a type mismatch in the external files obtained from heimdal: hcrypto/evp.c and hcrypto/evp-algs.c and produces the following type of compile time error messages. src/libafs/MODLOAD-.../evp.c: In function ???hc_EVP_md_null???: src/libafs/MODLOAD-.../evp.c:501:2: error: cast between incompatible function types from ???void (*)(void *)??? to ???int (*)(EVP_MD_CTX *)??? {aka ???int (*)(struct hc_EVP_MD_CTX *)???} [-Werror=cast-function-type] 501 | (hc_evp_md_init)null_Init, | ^ Use AX_APPEND_COMPILE_FLAGS to create a CFLAGS_NOCAST_FUNCTION_TYPE macro to disable this warning and update the CFLAGS for these 2 files for the Linux libafs build. Update the CODING documentation to add the new exceptions. In addition add a brief description on how to set up autoconf to add a new build macro to suppress compiler warnings. Note: upstream heimdal has committed a fix for this in: hcrypto: Fix return type for null_Init, null_Update and null_Final (fc4b3ce49b) Reviewed-on: https://gerrit.openafs.org/14881 Reviewed-by: Benjamin Kaduk <[email protected]> Tested-by: BuildBot <[email protected]> Reviewed-by: Andrew Deason <[email protected]> (cherry picked from commit 6bdfa976731ce07f3236893ecf12abb9e169b882) Change-Id: Ibd354f663d5876c421a8b4e89b8943c9e3d59ebc --- diff --git a/CODING b/CODING index 5d62dbb..c266979 100644 --- a/CODING +++ b/CODING @@ -265,7 +265,13 @@ # endif #endif -If a pragma isn't available for your particular warning, you will need to +If the source cannot be changed to add a pragma, you might be abe to use the +autoconf function AX_APPEND_COMPILE_FLAGS to create a new macro that disables +the warning and then use macro for the build options for that file. For an +example, see how the autoconf macro CFLAGS_NOIMPLICIT_FALLTHROUGH is defined and +used. + +Finally if there isn't a way to disable the specific warning, you will need to disable all warnings for the file in question. You can do this by supplying the autoconf macro @CFLAGS_NOERROR@ in the build options for the file. For example: @@ -288,6 +294,10 @@ : signed vs unsigned for dates butc/tcudbprocs.c : all : ubik_Call external/heimdal/hcrypto/validate.c: all: statement with empty body +external/heimdal/hcrypto/evp.c: cast-function-type + : Linux kernel build uses -Wcast-function-type +external/heimdal/hcrypto/evp-algs.c: cast-function-type + : Linux kernel build uses -Wcast-function-type kauth/admin_tools.c : strict-proto : ubik_Call kauth/authclient.c : strict-proto : ubik_Call nonsense libadmin/kas/afs_kasAdmin.c: strict-proto : ubik_Call nonsense diff --git a/src/cf/osconf.m4 b/src/cf/osconf.m4 index 1e1b080..11f3eea 100644 --- a/src/cf/osconf.m4 +++ b/src/cf/osconf.m4 @@ -665,6 +665,7 @@ CFLAGS_NOSTRICT=-fno-strict-aliasing CFLAGS_NOUNUSED= CFLAGS_NOOLDSTYLE= +CFLAGS_NOCAST_FUNCTION_TYPE= XCFLAGS_NOCHECKING="$XCFLAGS" if test "x$GCC" = "xyes"; then @@ -677,6 +678,8 @@ CFLAGS_NOERROR="-Wno-error" CFLAGS_NOUNUSED="-Wno-unused" CFLAGS_NOOLDSTYLE="-Wno-old-style-definition" + AX_APPEND_COMPILE_FLAGS([-Wno-cast-function-type], + [CFLAGS_NOCAST_FUNCTION_TYPE]) AC_DEFINE(IGNORE_SOME_GCC_WARNINGS, 1, [define to disable some gcc warnings in warnings-as-errors mode]) else CFLAGS_NOSTRICT= @@ -753,6 +756,7 @@ AC_SUBST(CFLAGS_NOSTRICT) AC_SUBST(CFLAGS_NOUNUSED) AC_SUBST(CFLAGS_NOOLDSTYLE) +AC_SUBST(CFLAGS_NOCAST_FUNCTION_TYPE) AC_SUBST(XCFLAGS64) AC_SUBST(XLDFLAGS) AC_SUBST(XLDFLAGS64) diff --git a/src/libafs/MakefileProto.LINUX.in b/src/libafs/MakefileProto.LINUX.in index d98fa05..8e98afd 100644 --- a/src/libafs/MakefileProto.LINUX.in +++ b/src/libafs/MakefileProto.LINUX.in @@ -79,8 +79,9 @@ CFLAGS_opr_rbtree.o = -I${TOP_SRCDIR}/opr CFLAGS_evp.o = -I$(TOP_SRCDIR)/external/heimdal/hcrypto \ - -DHAVE_CONFIG_H -CFLAGS_evp-algs.o = -I$(TOP_SRCDIR)/external/heimdal/hcrypto + -DHAVE_CONFIG_H @CFLAGS_NOCAST_FUNCTION_TYPE@ +CFLAGS_evp-algs.o = -I$(TOP_SRCDIR)/external/heimdal/hcrypto \ + @CFLAGS_NOCAST_FUNCTION_TYPE@ CFLAGS_evp-kernel.o = -I$(TOP_SRCDIR)/external/heimdal/hcrypto CFLAGS_rand-timer-kernel.o = -I$(TOP_SRCDIR)/external/heimdal/hcrypto CFLAGS_rand-kernel.o = -I$(TOP_SRCDIR)/external/heimdal/hcrypto ++++++ 4cf7a9a.diff ++++++ >From 4cf7a9adba18ed7752898c0d9421067c7bf17292 Mon Sep 17 00:00:00 2001 From: Cheyenne Wills <[email protected]> Date: Wed, 09 Feb 2022 14:00:13 -0700 Subject: [PATCH] autoconf: Additional library test for ncurses Depending on how the ncurses libraries were built the external symbol 'LINES' may be replaced with the '_nc_LINES' external symbol. Because the symbol 'LINES' may or may not be present, the autoconf test can fail to detect the correct libraries needed for curses support. Add an additional AC_CHECK_LIBs for the symbol _nc_LINES (within the ncurses or tinfo libraries) when setting the $LIB_curses. This commit was adapted from the openSuSE source packaging for openafs. Background: when ncurses is built with --enable-reentrant, LINES is defined as a C preprocessor macro that expands to a call to _nc_LINES Change-Id: If5e93078ff8cd0af5a50a25a8be7b462261a4f6f --- diff --git a/src/cf/curses.m4 b/src/cf/curses.m4 index 24c6535..1691845 100644 --- a/src/cf/curses.m4 +++ b/src/cf/curses.m4 @@ -19,7 +19,11 @@ AC_CHECK_LIB([ncurses], [initscr], [AC_CHECK_LIB([ncurses], [LINES], [openafs_cv_curses_lib=-lncurses], [AC_CHECK_LIB([tinfo], [LINES], - [openafs_cv_curses_lib="-lncurses -ltinfo"])])]) + [openafs_cv_curses_lib="-lncurses -ltinfo"], + [AC_CHECK_LIB([ncurses], [_nc_LINES], + [openafs_cv_curses_lib=-lncurses], + [AC_CHECK_LIB([tinfo], [_nc_LINES], + [openafs_cv_curses_lib="-lncurses -ltinfo"])])])])]) AS_IF([test "x$openafs_cv_curses_lib" = x], [AC_CHECK_LIB([Hcurses], [initscr], [openafs_cv_curses_lib=-lHcurses])]) AS_IF([test "x$openafs_cv_curses_lib" = x], ++++++ a714e86.diff ++++++ >From a714e865efe41aa1112f6f9c8479112660dacd6f Mon Sep 17 00:00:00 2001 From: Cheyenne Wills <[email protected]> Date: Thu, 27 Jan 2022 20:19:17 -0700 Subject: [PATCH] Linux-5.17: kernel func complete_and_exit renamed Handle the Linux kernel function rename made in commit "exit: Rename complete_and_exit to kthread_complete_and_exit" (cead1855) Add a new autoconf test for the linux function kthread_complete_and_exit and if not found use a define to map kthread_complete_and_exit to complete_and_exit. Replace calls to complete_and_exit with kthread_complete_and_exit. Reviewed-on: https://gerrit.openafs.org/14882 Tested-by: BuildBot <[email protected]> Reviewed-by: Andrew Deason <[email protected]> Reviewed-by: Benjamin Kaduk <[email protected]> (cherry picked from commit a651d4db7f86a24ea6784f6f27d5c8482667267b) Change-Id: Ibe96b92a84a8f876dda4019c221c37dabde93244 --- diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h index 726b655..53a079b 100644 --- a/src/afs/LINUX/osi_compat.h +++ b/src/afs/LINUX/osi_compat.h @@ -27,6 +27,10 @@ # endif #endif +#if !defined(HAVE_LINUX_KTHREAD_COMPLETE_AND_EXIT) +# define kthread_complete_and_exit complete_and_exit +#endif + #if defined(STRUCT_DENTRY_OPERATIONS_HAS_D_AUTOMOUNT) && !defined(DCACHE_NEED_AUTOMOUNT) # define DCACHE_NEED_AUTOMOUNT DMANAGED_AUTOMOUNT #endif diff --git a/src/afs/afs_call.c b/src/afs/afs_call.c index 32ad210..fab4c01 100644 --- a/src/afs/afs_call.c +++ b/src/afs/afs_call.c @@ -19,7 +19,9 @@ #include "afs/afs_stats.h" #include "rx/rx_globals.h" #if !defined(UKERNEL) -# if !defined(AFS_LINUX20_ENV) +# if defined(AFS_LINUX20_ENV) +# include "osi_compat.h" +# else # include "net/if.h" # ifdef AFS_SGI62_ENV # include "h/hashing.h" @@ -328,7 +330,7 @@ sprintf(current->comm, "afs_callback"); afs_RXCallBackServer(); AFS_GUNLOCK(); - complete_and_exit(0, 0); + kthread_complete_and_exit(0, 0); break; case AFSOP_START_AFS: sprintf(current->comm, "afs_afsstart"); @@ -342,7 +344,7 @@ sprintf(current->comm, "afsd"); afs_Daemon(); AFS_GUNLOCK(); - complete_and_exit(0, 0); + kthread_complete_and_exit(0, 0); break; case AFSOP_START_BKG: #ifdef AFS_NEW_BKG @@ -361,7 +363,7 @@ afs_BackgroundDaemon(); AFS_GUNLOCK(); #endif - complete_and_exit(0, 0); + kthread_complete_and_exit(0, 0); break; case AFSOP_START_TRUNCDAEMON: sprintf(current->comm, "afs_trimstart"); @@ -372,7 +374,7 @@ sprintf(current->comm, "afs_cachetrim"); afs_CacheTruncateDaemon(); AFS_GUNLOCK(); - complete_and_exit(0, 0); + kthread_complete_and_exit(0, 0); break; case AFSOP_START_CS: sprintf(current->comm, "afs_checkserver"); @@ -380,7 +382,7 @@ complete(arg->complete); afs_CheckServerDaemon(); AFS_GUNLOCK(); - complete_and_exit(0, 0); + kthread_complete_and_exit(0, 0); break; case AFSOP_RXEVENT_DAEMON: sprintf(current->comm, "afs_evtstart"); @@ -398,7 +400,7 @@ sprintf(current->comm, "afs_rxevent"); afs_rxevent_daemon(); AFS_GUNLOCK(); - complete_and_exit(0, 0); + kthread_complete_and_exit(0, 0); break; #ifdef RXK_LISTENER_ENV case AFSOP_RXLISTENER_DAEMON: @@ -420,7 +422,7 @@ sprintf(current->comm, "afs_rxlistener"); rxk_Listener(); AFS_GUNLOCK(); - complete_and_exit(0, 0); + kthread_complete_and_exit(0, 0); break; #endif default: diff --git a/src/cf/linux-kernel-func.m4 b/src/cf/linux-kernel-func.m4 index 0ca3e44..cd4afe9 100644 --- a/src/cf/linux-kernel-func.m4 +++ b/src/cf/linux-kernel-func.m4 @@ -178,6 +178,12 @@ [#include <net/ip.h>], [ip_sock_set_mtu_discover(NULL, 0);]) +dnl Linux 5.17 renamed complete_and_exit to kthread_complete_and_exit +AC_CHECK_LINUX_FUNC([kthread_complete_and_exit], + [#include <linux/kernel.h> + #include <linux/kthread.h>], + [kthread_complete_and_exit(0, 0);]) + dnl Consequences - things which get set as a result of the dnl above tests AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"], ++++++ gcc-11.diff ++++++ >From 36796bbb83af2650a872234fdb5cf7124bf6cfa8 Mon Sep 17 00:00:00 2001 From: Michael Meffie <[email protected]> Date: Mon, 23 Aug 2021 14:23:01 -0400 Subject: [PATCH] ubik: Fix ubeacon_updateUbikNetworkAddress() mismatched array parameter warning The ubeacon_updateUbikNetworkAddress() prototype does not match the function definition. The ubik_host parameter is declared as an unbounded array in the prototype but is defined as a bounded array. As of GCC 12, a warning is issued for the mismatch: error: argument 1 of type ???afs_uint32[256]??? {aka ???unsigned int[256]???} with mismatched bound [-Werror=array-parameter=] ubeacon_updateUbikNetworkAddress( afs_uint32 ubik_host[UBIK_MAX_INTERFACE_ADDR]) note: previously declared as ???afs_uint32[]??? {aka ???unsigned int[]???} extern int ubeacon_updateUbikNetworkAddress(afs_uint32 ubik_host[]); Restore the ubik_host array length in the function prototype, which was dropped in commit 9020e6e2f0357b1082705dcaa6626573433969ec (ubik: Defer updateUbikNetworkAddress until after RX startup). Change-Id: I8189effc5b68ef8c1b45b4107f5e22e44ecf59fd Reviewed-on: https://gerrit.openafs.org/14767 Tested-by: BuildBot <[email protected]> Reviewed-by: Benjamin Kaduk <[email protected]> --- diff --git a/src/ubik/ubik.p.h b/src/ubik/ubik.p.h index cfd12f7..52869ad 100644 --- a/src/ubik/ubik.p.h +++ b/src/ubik/ubik.p.h @@ -492,7 +492,7 @@ char clones[]); extern int ubeacon_InitServerList(afs_uint32 ame, afs_uint32 aservers[]); extern void *ubeacon_Interact(void *); -extern int ubeacon_updateUbikNetworkAddress(afs_uint32 ubik_host[]); +extern int ubeacon_updateUbikNetworkAddress(afs_uint32 ubik_host[UBIK_MAX_INTERFACE_ADDR]); extern struct beacon_data beacon_globals; extern struct addr_data addr_globals; >From 4a8d0c4089078fb3df9cc06b595c80c9b4c2ca7f Mon Sep 17 00:00:00 2001 From: Michael Meffie <[email protected]> Date: Mon, 23 Aug 2021 15:42:52 -0400 Subject: [PATCH] libadmin: Fix isAlias may be uninitialized warning The cfgutil_HostNameIsAlias() function has an output parameter called isAlias, which is used when cfgutil_HostIsAlias() returns non-zero. However, it possible for isAlias to not be set before returning. GCC 12 issues a warning about the possible use of the uninitialized isAlias variable: cfginternal.c:366:32: error: ???isAlias??? may be used uninitialized [-Werror=maybe-uninitialized] Initialize the cfgutil_HostNameIsAlias() isAlias output flag to false. Also, fix the misleading code indentation around the cfgutil_HostNameIsAlias() call. Change-Id: I68e66ae5f9019a613187321bb792d0505959ed30 Reviewed-on: https://gerrit.openafs.org/14772 Reviewed-by: Cheyenne Wills <[email protected]> Tested-by: BuildBot <[email protected]> Reviewed-by: Benjamin Kaduk <[email protected]> --- diff --git a/src/libadmin/cfg/cfginternal.c b/src/libadmin/cfg/cfginternal.c index 1f581b8..f1abacb 100644 --- a/src/libadmin/cfg/cfginternal.c +++ b/src/libadmin/cfg/cfginternal.c @@ -348,7 +348,7 @@ short dbhostFound = 0; while (!dbhostDone) { - short isAlias; + short isAlias = 0; if (!bos_HostGetNext(dbIter, hostNameAlias, &tst2)) { /* no more entries (or failure) */ @@ -357,15 +357,15 @@ } dbhostDone = 1; - } else - if (!cfgutil_HostNameIsAlias - (hostName, hostNameAlias, &isAlias, &tst2)) { - tst = tst2; - dbhostDone = 1; - - } else if (isAlias) { - dbhostFound = 1; - dbhostDone = 1; + } else { + if (!cfgutil_HostNameIsAlias(hostName, hostNameAlias, + &isAlias, &tst2)) { + tst = tst2; + dbhostDone = 1; + } else if (isAlias) { + dbhostFound = 1; + dbhostDone = 1; + } } } >From 7924aecf95bf4918a485a041f2426bd1fa407ac8 Mon Sep 17 00:00:00 2001 From: Michael Meffie <[email protected]> Date: Fri, 03 Sep 2021 07:05:36 -0400 Subject: [PATCH] ptserver: Fix CreateEntry() stringop-overflow warnings The CreateEntry() prototype has been fixed to match the function definition, so callers are expected to provide bounded arrays for the user or group name. Fix the InitialGroup() macro which is used to set the built-in names using string literal to avoid stringop-overflow warnings. error: ???CreateEntry??? accessing 64 bytes in a region of size 22 [-Werror=stringop-overflow=] code = CreateEntry(tt, (name), &temp, /*idflag*/1, flag, SYSADMINID, SYSADMINID); \ note: in expansion of macro ???InitialGroup??? InitialGroup(SYSADMINID, "system:administrators"); note: referencing argument 2 of type ???char *??? note: in a call to function ???CreateEntry??? CreateEntry(struct ubik_trans *at, char aname[PR_MAXNAMELEN], ... (Repeated for "system:backup", "system:anyuser", "system:authuser", "system:ptsviewers", and "anonymous".) Change-Id: I7a37d4c8e191ffff52c2fdc1ed3783f4c3592b11 Reviewed-on: https://gerrit.openafs.org/14789 Reviewed-by: Benjamin Kaduk <[email protected]> Tested-by: Benjamin Kaduk <[email protected]> --- diff --git a/src/ptserver/ptutils.c b/src/ptserver/ptutils.c index dfa54ee..07fd220 100644 --- a/src/ptserver/ptutils.c +++ b/src/ptserver/ptutils.c @@ -1847,8 +1847,15 @@ #define InitialGroup(id,name) do { \ afs_int32 temp = (id); \ afs_int32 flag = (id) < 0 ? PRGRP : 0; \ + char tname[PR_MAXNAMELEN]; \ + if (strlcpy(tname, (name), sizeof(tname)) >= sizeof(tname)) { \ + code = PRBADNAM; \ + afs_com_err (whoami, code, "name too long %s", (name)); \ + ubik_AbortTrans(tt); \ + return code; \ + } \ code = CreateEntry \ - (tt, (name), &temp, /*idflag*/1, flag, SYSADMINID, SYSADMINID); \ + (tt, tname, &temp, /*idflag*/1, flag, SYSADMINID, SYSADMINID); \ if (code) { \ afs_com_err (whoami, code, "couldn't create %s with id %di.", \ (name), (id)); \ >From 92a6242de2d8ea280debc283a7c089f97c1670bc Mon Sep 17 00:00:00 2001 From: Michael Meffie <[email protected]> Date: Mon, 23 Aug 2021 15:37:13 -0400 Subject: [PATCH] bucoord: Fix doDispatch() array-parameter gcc warning The doDispatch() prototype does not match the function definition. The targv parameter is declared as an unbounded array in the prototype, but is defined as a bounded array. As of GCC 12, a warning is issued for the mismatch. main.c:346:18: error: argument 2 of type ???char *[100]??? with mismatched bound [-Werror=array-parameter=] bucoord_internal.h:123:40: note: previously declared as ???char *[]??? Within doDispatch(), the targv argument is just passed to cmd_Dispatch() (this is the only use of targv). Since cmd_Displatch() expects an unbounded array, update the doDispatch() definition to match the prototype. Change-Id: I50a170b3490d0d4e5d971b9ccb483cccb6833686 Reviewed-on: https://gerrit.openafs.org/14771 Reviewed-by: Michael Meffie <[email protected]> Reviewed-by: Cheyenne Wills <[email protected]> Tested-by: BuildBot <[email protected]> Reviewed-by: Benjamin Kaduk <[email protected]> --- diff --git a/src/bucoord/main.c b/src/bucoord/main.c index a453cc9..972ac2d 100644 --- a/src/bucoord/main.c +++ b/src/bucoord/main.c @@ -343,7 +343,7 @@ afs_int32 doDispatch(afs_int32 targc, - char *targv[MAXV], + char *targv[], afs_int32 dispatchCount) /* to prevent infinite recursion */ { char *sargv[MAXV]; >From a1e57d2e42b6d01e5ece93d5d49a4b9f3ecd3edc Mon Sep 17 00:00:00 2001 From: Michael Meffie <[email protected]> Date: Mon, 23 Aug 2021 15:33:19 -0400 Subject: [PATCH] Fix PrintInode() mismatched array parameter warnings The PrintInode() prototypes do not match the function definitions. When AFS_64BIT_IOPS_ENV is defined (which is the common case and is required for namei), the buffer parameter is declared as a bounded character array (afs_ino_str_t) in the prototype, but is defined as an unbounded character pointer. When AFS_64BIT_IOPS_ENV is not defined (for legacy 32-bit inode vice partitions), PrintInode() is declared with no specified parameters. A static buffer is used to hold the formatted string when a NULL is passed as the first argument to PrintInode(). However, this method is only used by the volinfo and iopen utility programs. Fix the mismatch function prototypes and definitions to use the bounded char array (afs_ino_str_t) in all cases. Remove the deprecated function declaration with no specified parameters. Update vol-info and iopen to pass an afs_ino_str_t buffer and remove the now unused static buffer. Update the duplicated PrintInode() function definition in namei_ops.c. (This duplicated code could be removed in a future commit.) Change-Id: I5c0128bb0d572dab0df637289daad0e648ad8a8f Reviewed-on: https://gerrit.openafs.org/14770 Tested-by: BuildBot <[email protected]> Reviewed-by: Cheyenne Wills <[email protected]> Reviewed-by: Benjamin Kaduk <[email protected]> --- diff --git a/src/sys/afssyscalls.c b/src/sys/afssyscalls.c index 8291a46..b248e69 100644 --- a/src/sys/afssyscalls.c +++ b/src/sys/afssyscalls.c @@ -281,23 +281,16 @@ } -/* PrintInode +/** + * Format a string to print either 32 or 64 bit inode numbers. * - * returns a static string used to print either 32 or 64 bit inode numbers. + * @param[out] s string buffer + * @param[in] ino inode number + * @returns pointer to formatted inode number string */ -#ifdef AFS_64BIT_IOPS_ENV -char * -PrintInode(char *s, Inode ino) -#else char * PrintInode(afs_ino_str_t s, Inode ino) -#endif { - static afs_ino_str_t result; - - if (!s) - s = result; - #ifdef AFS_64BIT_IOPS_ENV (void)sprintf((char *)s, "%llu", ino); #else diff --git a/src/sys/afssyscalls.h b/src/sys/afssyscalls.h index df37c42..ea74bcd 100644 --- a/src/sys/afssyscalls.h +++ b/src/sys/afssyscalls.h @@ -88,14 +88,9 @@ #define AFS_INO_STR_LENGTH 32 typedef char afs_ino_str_t[AFS_INO_STR_LENGTH]; -/* Print either 32 or 64 bit inode numbers. char * may be NULL. In which case - * a local statis is returned. +/* Format either 32 or 64 bit inode numbers. */ -#ifdef AFS_64BIT_IOPS_ENV -extern char *PrintInode(afs_ino_str_t, Inode); -#else -extern char *PrintInode(); -#endif +extern char *PrintInode(afs_ino_str_t s, Inode ino) AFS_NONNULL((1)); /* Some places in the code assume icreate can return 0 when there's * an error. diff --git a/src/sys/iopen.c b/src/sys/iopen.c index 7c1a961..b9cd3d6 100644 --- a/src/sys/iopen.c +++ b/src/sys/iopen.c @@ -37,6 +37,7 @@ int fd, n; struct stat status; Inode ino; + afs_ino_str_t inode_str; if (argc != 3) Usage(); @@ -54,7 +55,7 @@ } printf("ino=%" AFS_INT64_FMT "\n", ino); printf("About to iopen(dev=(%d,%d), inode=%s, mode=%d\n", - major(status.st_dev), minor(status.st_dev), PrintInode(NULL, ino), + major(status.st_dev), minor(status.st_dev), PrintInode(inode_str, ino), O_RDONLY); fflush(stdout); fd = IOPEN(status.st_dev, ino, O_RDONLY); diff --git a/src/vol/namei_ops.c b/src/vol/namei_ops.c index 463b66b..d2f94bb 100644 --- a/src/vol/namei_ops.c +++ b/src/vol/namei_ops.c @@ -3275,19 +3275,17 @@ return code; } -/* PrintInode +/** + * Format a string to print inode numbers. * - * returns a static string used to print either 32 or 64 bit inode numbers. + * @param[out] s string buffer + * @param[in] ino inode number + * @returns pointer to formatted inode number string */ char * -PrintInode(char *s, Inode ino) +PrintInode(afs_ino_str_t s, Inode ino) { - static afs_ino_str_t result; - if (!s) - s = result; - snprintf(s, sizeof(afs_ino_str_t), "%llu", (afs_uintmax_t) ino); - return s; } diff --git a/src/vol/vol-info.c b/src/vol/vol-info.c index 22ac94a..6423fa8 100644 --- a/src/vol/vol-info.c +++ b/src/vol/vol-info.c @@ -331,6 +331,7 @@ struct versionStamp *vsn; int bad = 0; int code; + afs_ino_str_t inode_str; vsn = (struct versionStamp *)to; @@ -341,7 +342,7 @@ if (vsn->magic != magic) { bad++; fprintf(stderr, "%s: Inode %s: Bad magic %x (%x): IGNORED\n", - progname, PrintInode(NULL, ih->ih_ino), vsn->magic, magic); + progname, PrintInode(inode_str, ih->ih_ino), vsn->magic, magic); } /* Check is conditional, in case caller wants to inspect version himself */ @@ -349,23 +350,23 @@ bad++; fprintf(stderr, "%s: Inode %s: Bad version %x (%x): IGNORED\n", progname, - PrintInode(NULL, ih->ih_ino), vsn->version, version); + PrintInode(inode_str, ih->ih_ino), vsn->version, version); } if (bad && opt->fixHeader) { vsn->magic = magic; vsn->version = version; printf("Special index inode %s has a bad header. Reconstructing...\n", - PrintInode(NULL, ih->ih_ino)); + PrintInode(inode_str, ih->ih_ino)); code = IH_IWRITE(ih, 0, to, size); if (code != size) { fprintf(stderr, "%s: Write failed for inode %s; header left in damaged state\n", - progname, PrintInode(NULL, ih->ih_ino)); + progname, PrintInode(inode_str, ih->ih_ino)); } } if (!bad && opt->dumpInfo) { printf("Inode %s: Good magic %x and version %x\n", - PrintInode(NULL, ih->ih_ino), magic, version); + PrintInode(inode_str, ih->ih_ino), magic, version); } return 0; } @@ -887,6 +888,7 @@ afs_sfsize_t size = -1; IHandle_t *ih = NULL; FdHandle_t *fdP = NULL; + afs_ino_str_t inode_str; #ifdef AFS_NAMEI_ENV namei_t filename; #endif /* AFS_NAMEI_ENV */ @@ -912,7 +914,7 @@ error: if (opt->dumpInfo) { - printf("\t%s inode\t= %s (size = ", name, PrintInode(NULL, inode)); + printf("\t%s inode\t= %s (size = ", name, PrintInode(inode_str, inode)); if (size != -1) { printf("%lld)\n", size); } else { @@ -1241,6 +1243,7 @@ afs_foff_t total; ssize_t len; Inode ino = VNDISK_GET_INO(vdp->vnode); + afs_ino_str_t inode_str; if (!VALID_INO(ino)) { return; @@ -1251,10 +1254,10 @@ if (fdP == NULL) { fprintf(stderr, "%s: Can't open inode %s error %d (ignored)\n", - progname, PrintInode(NULL, ino), errno); + progname, PrintInode(inode_str, ino), errno); return; } - snprintf(nfile, sizeof nfile, "TmpInode.%s", PrintInode(NULL, ino)); + snprintf(nfile, sizeof nfile, "TmpInode.%s", PrintInode(inode_str, ino)); ofd = afs_open(nfile, O_CREAT | O_RDWR | O_TRUNC, 0600); if (ofd < 0) { fprintf(stderr, @@ -1276,7 +1279,7 @@ unlink(nfile); fprintf(stderr, "%s: Error while reading from inode %s (%d)\n", - progname, PrintInode(NULL, ino), errno); + progname, PrintInode(inode_str, ino), errno); return; } if (len == 0) @@ -1299,7 +1302,7 @@ IH_RELEASE(ih); close(ofd); printf("... Copied inode %s to file %s (%lu bytes)\n", - PrintInode(NULL, ino), nfile, (unsigned long)total); + PrintInode(inode_str, ino), nfile, (unsigned long)total); } /** @@ -1812,6 +1815,7 @@ VnodeDiskObject *vnode = vdp->vnode; afs_fsize_t fileLength; Inode ino; + afs_ino_str_t inode_str; ino = VNDISK_GET_INO(vnode); VNDISK_GET_LEN(fileLength, vnode); @@ -1828,7 +1832,7 @@ vnode->dataVersion, vnode->cloned, (afs_uintmax_t) fileLength, vnode->linkCount, vnode->parent); if (opt->dumpInodeNumber) - printf(" inode: %s", PrintInode(NULL, ino)); + printf(" inode: %s", PrintInode(inode_str, ino)); if (opt->dumpDate) printf(" ServerModTime: %s", date(vnode->serverModifyTime)); #if defined(AFS_NAMEI_ENV) >From a3aac5106beddc5a6f7a09c2d21c2524342aca01 Mon Sep 17 00:00:00 2001 From: Michael Meffie <[email protected]> Date: Mon, 23 Aug 2021 19:43:45 -0400 Subject: [PATCH] pts: Fix stringop-overflow warnings The ptutil functions are defined to accept bounded character arrays for user and group names. As of GCC 11, callers which provide the names as string literals now trigger the stringop-overflow warning, since the regions provided by the string literals are smaller than the bounded areas. error: ???pr_ChangeEntry??? accessing 64 bytes in a region of size 1 [-Werror=stringop-overflow=] note: referencing argument 4 of type ???char *??? error: ???pr_IsAMemberOf??? accessing 64 bytes in a region of size 22 [-Werror=stringop-overflow=] note: referencing argument 2 of type ???char *??? error: ???pr_CreateUser??? accessing 64 bytes in a region of size 16 [-Werror=stringop-overflow=] note: referencing argument 1 of type ???char *??? error: ???pr_Delete??? accessing 64 bytes in a region of size 16 [-Werror=stringop-overflow=] note: referencing argument 1 of type ???char *??? Update the callers in pts and testpt which pass literal strings. Instead of passing char pointers to literal strings, assign the strings to prname buffers and pass the prname buffers to the pr utility functions. Change-Id: I7d8c67aa28d21bb6889ef92a2193a77b54c83cb1 Reviewed-on: https://gerrit.openafs.org/14769 Reviewed-by: Cheyenne Wills <[email protected]> Tested-by: BuildBot <[email protected]> Reviewed-by: Benjamin Kaduk <[email protected]> --- diff --git a/src/ptserver/pts.c b/src/ptserver/pts.c index e749714..90d6f16 100644 --- a/src/ptserver/pts.c +++ b/src/ptserver/pts.c @@ -663,6 +663,7 @@ idlist ids; idlist lids; struct prcheckentry aentry; + prname admins = "system:administrators"; if (GetNameOrId(as, &ids, &names)) return PRBADARG; @@ -728,7 +729,7 @@ } if (aentry.id == SYSADMINID) admin = 1; - else if (!pr_IsAMemberOf(aentry.name, "system:administrators", &flag)) { + else if (!pr_IsAMemberOf(aentry.name, admins, &flag)) { if (flag) admin = 1; } @@ -791,11 +792,12 @@ { afs_int32 code; char *name; + prname newname = ""; char *owner; name = as->parms[0].items->data; owner = as->parms[1].items->data; - code = pr_ChangeEntry(name, "", 0, owner); + code = pr_ChangeEntry(name, newname, 0, owner); if (code) afs_com_err(whoami, code, "; unable to change owner of %s to %s", name, owner); @@ -808,10 +810,11 @@ afs_int32 code; char *oldname; char *newname; + prname owner = ""; oldname = as->parms[0].items->data; newname = as->parms[1].items->data; - code = pr_ChangeEntry(oldname, newname, 0, ""); + code = pr_ChangeEntry(oldname, newname, 0, owner); if (code) afs_com_err(whoami, code, "; unable to change name of %s to %s", oldname, newname); diff --git a/src/ptserver/testpt.c b/src/ptserver/testpt.c index eaaee48..c359f8f 100644 --- a/src/ptserver/testpt.c +++ b/src/ptserver/testpt.c @@ -217,7 +217,7 @@ CreateUser(int u) { afs_int32 code; - char name[16]; + prname name; afs_int32 id; sprintf(name, "%s%d", createPrefix, u); >From fe64ddd3b49bf15222d32d443ff226dd4c2b899e Mon Sep 17 00:00:00 2001 From: Michael Meffie <[email protected]> Date: Tue, 24 Aug 2021 16:40:22 -0400 Subject: [PATCH] ptserver: Fix CreateEntry() mismatched array parameter warning The CreateEntry() prototype does not match the function definition. The aname parameter is declared as an unbounded array in the prototype but is defined as a bounded array. As of GCC 12, a warning is issued for the mismatch. error: argument 2 of type ???char[64]??? with mismatched bound [-Werror=array-parameter=] CreateEntry(struct ubik_trans *at, char aname[PR_MAXNAMELEN], ... note: previously declared as ???char[]??? extern afs_int32 CreateEntry(struct ubik_trans *at, char aname[], ... Fix the prototype to declare the 'aname' parameter as a bounded array as expected for this function. Change-Id: I6d4dadcdd3f80c2b6f1b17670bbbc1e9e6076559 Reviewed-on: https://gerrit.openafs.org/14768 Tested-by: BuildBot <[email protected]> Reviewed-by: Benjamin Kaduk <[email protected]> --- diff --git a/src/ptserver/ptprototypes.h b/src/ptserver/ptprototypes.h index c6a9dab..bb21b6b 100644 --- a/src/ptserver/ptprototypes.h +++ b/src/ptserver/ptprototypes.h @@ -72,7 +72,7 @@ afs_int32 loc, afs_int32 aid); extern int AccessOK(struct ubik_trans *ut, afs_int32 cid, struct prentry *tentry, int mem, int any); -extern afs_int32 CreateEntry(struct ubik_trans *at, char aname[], +extern afs_int32 CreateEntry(struct ubik_trans *at, char aname[PR_MAXNAMELEN], afs_int32 *aid, afs_int32 idflag, afs_int32 flag, afs_int32 oid, afs_int32 creator); extern afs_int32 RemoveFromEntry(struct ubik_trans *at, afs_int32 aid, ++++++ kmp_only.files ++++++ /usr/bin/aklog /usr/bin/fs /usr/bin/klog.krb5 /usr/bin/pagsh /usr/bin/pagsh.krb /usr/bin/tokens /usr/bin/tokens.krb /usr/bin/unlog /usr/bin/up /usr/lib/firewalld/services/afs3-callback.xml /usr/lib/firewalld/services/afs3-rmtsys.xml /usr/sbin/afsd /usr/sbin/fstrace /usr/share/man/man1/aklog.1 /usr/share/man/man1/copyauth.1 /usr/share/man/man1/fs.1 /usr/share/man/man1/fs_apropos.1 /usr/share/man/man1/fs_bypassthreshold.1 /usr/share/man/man1/fs_checkservers.1 /usr/share/man/man1/fs_checkvolumes.1 /usr/share/man/man1/fs_chgrp.1 /usr/share/man/man1/fs_chown.1 /usr/share/man/man1/fs_cleanacl.1 /usr/share/man/man1/fs_copyacl.1 /usr/share/man/man1/fs_cscpolicy.1 /usr/share/man/man1/fs_discon.1 /usr/share/man/man1/fs_diskfree.1 /usr/share/man/man1/fs_examine.1 /usr/share/man/man1/fs_exportafs.1 /usr/share/man/man1/fs_flush.1 /usr/share/man/man1/fs_flushall.1 /usr/share/man/man1/fs_flushmount.1 /usr/share/man/man1/fs_flushvolume.1 /usr/share/man/man1/fs_getcacheparms.1 /usr/share/man/man1/fs_getcalleraccess.1 /usr/share/man/man1/fs_getcellstatus.1 /usr/share/man/man1/fs_getclientaddrs.1 /usr/share/man/man1/fs_getcrypt.1 /usr/share/man/man1/fs_getfid.1 /usr/share/man/man1/fs_getserverprefs.1 /usr/share/man/man1/fs_getverify.1 /usr/share/man/man1/fs_help.1 /usr/share/man/man1/fs_listacl.1 /usr/share/man/man1/fs_listaliases.1 /usr/share/man/man1/fs_listcells.1 /usr/share/man/man1/fs_listquota.1 /usr/share/man/man1/fs_lsmount.1 /usr/share/man/man1/fs_memdump.1 /usr/share/man/man1/fs_messages.1 /usr/share/man/man1/fs_minidump.1 /usr/share/man/man1/fs_mkmount.1 /usr/share/man/man1/fs_monitor.1 /usr/share/man/man1/fs_newalias.1 /usr/share/man/man1/fs_newcell.1 /usr/share/man/man1/fs_nukenfscreds.1 /usr/share/man/man1/fs_precache.1 /usr/share/man/man1/fs_quota.1 /usr/share/man/man1/fs_rmmount.1 /usr/share/man/man1/fs_rxstatpeer.1 /usr/share/man/man1/fs_rxstatproc.1 /usr/share/man/man1/fs_setacl.1 /usr/share/man/man1/fs_setcachesize.1 /usr/share/man/man1/fs_setcbaddr.1 /usr/share/man/man1/fs_setcell.1 /usr/share/man/man1/fs_setclientaddrs.1 /usr/share/man/man1/fs_setcrypt.1 /usr/share/man/man1/fs_setquota.1 /usr/share/man/man1/fs_setserverprefs.1 /usr/share/man/man1/fs_setverify.1 /usr/share/man/man1/fs_setvol.1 /usr/share/man/man1/fs_storebehind.1 /usr/share/man/man1/fs_sysname.1 /usr/share/man/man1/fs_trace.1 /usr/share/man/man1/fs_uuid.1 /usr/share/man/man1/fs_whereis.1 /usr/share/man/man1/fs_whichcell.1 /usr/share/man/man1/fs_wscell.1 /usr/share/man/man1/klog.krb5.1 /usr/share/man/man1/pagsh.1 /usr/share/man/man1/pagsh.krb.1 /usr/share/man/man1/tokens.1 /usr/share/man/man1/tokens.krb.1 /usr/share/man/man1/unlog.1 /usr/share/man/man1/up.1 /usr/share/man/man5/afs_cache.5 /usr/share/man/man5/afszcm.cat.5 /usr/share/man/man5/cacheinfo.5 /usr/share/man/man8/afsd.8 /usr/share/man/man8/fstrace.8 /usr/share/man/man8/fstrace_apropos.8 /usr/share/man/man8/fstrace_clear.8 /usr/share/man/man8/fstrace_dump.8 /usr/share/man/man8/fstrace_help.8 /usr/share/man/man8/fstrace_lslog.8 /usr/share/man/man8/fstrace_lsset.8 /usr/share/man/man8/fstrace_setlog.8 /usr/share/man/man8/fstrace_setset.8 /usr/share/openafs/C/afszcm.cat
