diff options
Diffstat (limited to 'source/l')
37 files changed, 400 insertions, 1328 deletions
diff --git a/source/l/LibRaw/LibRaw.SlackBuild b/source/l/LibRaw/LibRaw.SlackBuild index a6356aaf..64a358cc 100755 --- a/source/l/LibRaw/LibRaw.SlackBuild +++ b/source/l/LibRaw/LibRaw.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=LibRaw VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-4} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} diff --git a/source/l/accountsservice/accountsservice.SlackBuild b/source/l/accountsservice/accountsservice.SlackBuild index c608a4b0..5adfbaf3 100755 --- a/source/l/accountsservice/accountsservice.SlackBuild +++ b/source/l/accountsservice/accountsservice.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=accountsservice VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-4} +BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -107,9 +107,7 @@ meson setup \ -D docbook=false \ -D gtk_doc=true \ -D elogind=true \ - -D systemd=false \ -D systemdsystemunitdir=no \ - -D user_heuristics=false \ .. || exit 1 "${NINJA:=ninja}" $NUMJOBS || exit 1 DESTDIR=$PKG $NINJA install || exit 1 diff --git a/source/l/dconf-editor/dconf-editor.SlackBuild b/source/l/dconf-editor/dconf-editor.SlackBuild index 119b81cc..8ee443e9 100755 --- a/source/l/dconf-editor/dconf-editor.SlackBuild +++ b/source/l/dconf-editor/dconf-editor.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=dconf-editor VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -78,6 +78,8 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ +zcat $CWD/dconf-editor.ftbfs.diff.gz | patch -p1 --verbose || exit 1 + # Configure, build, and install: export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS" diff --git a/source/l/dconf-editor/dconf-editor.ftbfs.diff b/source/l/dconf-editor/dconf-editor.ftbfs.diff new file mode 100644 index 00000000..f6d99ba9 --- /dev/null +++ b/source/l/dconf-editor/dconf-editor.ftbfs.diff @@ -0,0 +1,18 @@ +--- ./editor/meson.build.orig 2021-03-23 10:37:37.571719400 -0500 ++++ ./editor/meson.build 2022-02-16 19:13:03.612538392 -0600 +@@ -1,7 +1,6 @@ + desktop = dconf_editor_namespace + '.desktop' + + i18n.merge_file ( +- desktop, + type: 'desktop', + input: desktop + '.in', + output: desktop, +@@ -26,7 +25,6 @@ + appdata = dconf_editor_namespace + '.appdata.xml' + + i18n.merge_file( +- appdata, + input: appdata + '.in', + output: appdata, + po_dir: po_dir, diff --git a/source/l/fuse/fuse.SlackBuild b/source/l/fuse/fuse.SlackBuild index c5f67f1c..0f6b5017 100755 --- a/source/l/fuse/fuse.SlackBuild +++ b/source/l/fuse/fuse.SlackBuild @@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=fuse VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-4} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -79,6 +79,11 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ +# patch to build with glibc-2.34 from https://src.fedoraproject.org/rpms/fuse/raw/rawhide/f/fuse2-0007-util-ulockmgr_server.c-conditionally-define-closefro.patch +zcat $CWD/fuse2-0007-util-ulockmgr_server.c-conditionally-define-closefro.patch.gz | patch -Esp1 --verbose || exit 1 + +autoreconf -vif + CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ diff --git a/source/l/fuse/fuse2-0007-util-ulockmgr_server.c-conditionally-define-closefro.patch b/source/l/fuse/fuse2-0007-util-ulockmgr_server.c-conditionally-define-closefro.patch new file mode 100644 index 00000000..4cc2f8f6 --- /dev/null +++ b/source/l/fuse/fuse2-0007-util-ulockmgr_server.c-conditionally-define-closefro.patch @@ -0,0 +1,55 @@ +From: Sam James <sam@gentoo.org> +Date: Sat, 24 Jul 2021 22:02:45 +0100 +Subject: [PATCH] util/ulockmgr_server.c: conditionally define closefrom (fix + glibc-2.34+) + +closefrom(3) has joined us in glibc-land from *BSD and Solaris. Since +it's available in glibc 2.34+, we want to detect it and only define our +fallback if the libc doesn't provide it. + +Bug: https://bugs.gentoo.org/803923 +Signed-off-by: Sam James <sam@gentoo.org> + +diff --git a/configure.ac b/configure.ac +index 9946a0e..a2d481a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -55,6 +55,7 @@ fi + + AC_CHECK_FUNCS([fork setxattr fdatasync splice vmsplice utimensat]) + AC_CHECK_FUNCS([posix_fallocate]) ++AC_CHECK_FUNCS([closefrom]) + AC_CHECK_MEMBERS([struct stat.st_atim]) + AC_CHECK_MEMBERS([struct stat.st_atimespec]) + +diff --git a/util/ulockmgr_server.c b/util/ulockmgr_server.c +index 273c7d9..a04dac5 100644 +--- a/util/ulockmgr_server.c ++++ b/util/ulockmgr_server.c +@@ -22,6 +22,10 @@ + #include <sys/socket.h> + #include <sys/wait.h> + ++#ifdef HAVE_CONFIG_H ++ #include "config.h" ++#endif ++ + struct message { + unsigned intr : 1; + unsigned nofd : 1; +@@ -124,6 +128,7 @@ static int receive_message(int sock, void *buf, size_t buflen, int *fdp, + return res; + } + ++#if !defined(HAVE_CLOSEFROM) + static int closefrom(int minfd) + { + DIR *dir = opendir("/proc/self/fd"); +@@ -141,6 +146,7 @@ static int closefrom(int minfd) + } + return 0; + } ++#endif + + static void send_reply(int cfd, struct message *msg) + { diff --git a/source/l/gcr/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch b/source/l/gcr/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch new file mode 100644 index 00000000..548368b7 --- /dev/null +++ b/source/l/gcr/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch @@ -0,0 +1,59 @@ +From b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8 Mon Sep 17 00:00:00 2001 +From: Jakub Jirutka <jakub@jirutka.cz> +Date: Wed, 12 Jan 2022 00:24:20 +0100 +Subject: [PATCH] meson: Fix unknown kw argument in gnome.generate_gir + +This argument has been removed in Meson 0.61.0: + + gck/meson.build:130:2: ERROR: gnome.generate_gir got unknown keyword arguments "packages" + +https://github.com/mesonbuild/meson/commit/f8fc5cb860465718fe7c79a1bf1fe00659f138de: + +> The packages argument to gnome.generate_gir was allowed, but never did anything, so stop passing it. + +Fixes #89 +--- + gck/meson.build | 1 - + gcr/meson.build | 1 - + ui/meson.build | 1 - + 3 files changed, 3 deletions(-) + +diff --git a/gck/meson.build b/gck/meson.build +index 756b4866..a21a1e9d 100644 +--- a/gck/meson.build ++++ b/gck/meson.build +@@ -131,7 +131,6 @@ if get_option('introspection') + sources: gck_gir_sources, + namespace: 'Gck', + nsversion: '@0@'.format(gck_major_version), +- packages: gck_deps, + export_packages: 'gck-@0@'.format(gck_major_version), + includes: [ 'GObject-2.0', 'Gio-2.0' ], + header: 'gck/gck.h', +diff --git a/gcr/meson.build b/gcr/meson.build +index 2233a445..c83641ba 100644 +--- a/gcr/meson.build ++++ b/gcr/meson.build +@@ -190,7 +190,6 @@ if get_option('introspection') + sources: [ gcr_base_public_sources, gcr_base_headers ], + namespace: 'Gcr', + nsversion: '@0@'.format(gcr_major_version), +- packages: gcr_base_deps, + export_packages: 'gcr-base-@0@'.format(gcr_major_version), + includes: [ + 'GObject-2.0', +diff --git a/ui/meson.build b/ui/meson.build +index e656ea23..32ee057f 100644 +--- a/ui/meson.build ++++ b/ui/meson.build +@@ -152,7 +152,6 @@ if get_option('introspection') + export_packages: 'gcr-ui-@0@'.format(gcr_major_version), + identifier_prefix: 'Gcr', + symbol_prefix: 'gcr', +- packages: gcr_ui_deps, + includes: [ + 'GObject-2.0', + 'Gio-2.0', +-- +GitLab + diff --git a/source/l/gcr/gcr.SlackBuild b/source/l/gcr/gcr.SlackBuild index 857116c7..7325aa2c 100755 --- a/source/l/gcr/gcr.SlackBuild +++ b/source/l/gcr/gcr.SlackBuild @@ -1,8 +1,7 @@ #!/bin/bash -# Slackware build script for gcr - # Copyright 2012 Robby Workman, Northport, Alabama, USA +# Copyright 2022 Patrick J. Volkerding, Sebeka, Minnesota, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -26,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gcr VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} if [ -z "$ARCH" ]; then case "$( uname -m )" in @@ -80,6 +79,9 @@ find . \ # meson. zcat $CWD/gcr.meson.disable.schemas-compile.update-mime.update-icon-cache.diff.gz | patch -p1 --verbose || exit 1 +# Fix for recent meson: +zcat $CWD/b3ca1d02bb0148ca787ac4aead164d7c8ce2c4d8.patch.gz | patch -p1 --verbose || exit 1 + # Configure, build, and install: export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS" diff --git a/source/l/gdk-pixbuf2-xlib/gdk-pixbuf2-xlib.SlackBuild b/source/l/gdk-pixbuf2-xlib/gdk-pixbuf2-xlib.SlackBuild index 4f365d90..a7a37f5c 100755 --- a/source/l/gdk-pixbuf2-xlib/gdk-pixbuf2-xlib.SlackBuild +++ b/source/l/gdk-pixbuf2-xlib/gdk-pixbuf2-xlib.SlackBuild @@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gdk-pixbuf2-xlib SRCNAM=gdk-pixbuf-xlib VERSION=${VERSION:-$(echo $SRCNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-4} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -95,10 +95,7 @@ meson setup \ --sysconfdir=/etc \ --localstatedir=/var \ --buildtype=release \ - -Ddocs=true \ - -Dgir=true \ - -Dx11=true \ - -Dinstalled_tests=false \ + -Dgtk_doc=false \ .. || exit 1 "${NINJA:=ninja}" $NUMJOBS || exit 1 DESTDIR=$PKG $NINJA install || exit 1 diff --git a/source/l/gdk-pixbuf2/gdk-pixbuf2.SlackBuild b/source/l/gdk-pixbuf2/gdk-pixbuf2.SlackBuild index 08bf9a8c..1a8c6a2a 100755 --- a/source/l/gdk-pixbuf2/gdk-pixbuf2.SlackBuild +++ b/source/l/gdk-pixbuf2/gdk-pixbuf2.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gdk-pixbuf VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -95,8 +95,6 @@ meson setup \ --localstatedir=/var \ --buildtype=release \ -Dgtk_doc=false \ - -Dgir=true \ - -Dx11=true \ -Dinstalled_tests=false \ .. || exit 1 "${NINJA:=ninja}" $NUMJOBS || exit 1 diff --git a/source/l/gegl/gegl.SlackBuild b/source/l/gegl/gegl.SlackBuild index 8f17c84a..3f037bd2 100755 --- a/source/l/gegl/gegl.SlackBuild +++ b/source/l/gegl/gegl.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gegl VERSION=${VERSION:-$(echo gegl-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-2} +BUILD=${BUILD:-3} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/l/glade/glade.SlackBuild b/source/l/glade/glade.SlackBuild index 4f6a0a73..2cb458c5 100755 --- a/source/l/glade/glade.SlackBuild +++ b/source/l/glade/glade.SlackBuild @@ -1,8 +1,8 @@ #!/bin/bash -# Slackware build script for glade - # Copyright 2011, 2020 Robby Workman, Tuscaloosa, Alabama, USA +# Copyright 2022 Patrick J. Volkerding, Sebeka, MN, USA +# # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=glade VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-5} +BUILD=${BUILD:-6} if [ -z "$ARCH" ]; then case "$( uname -m )" in @@ -79,8 +79,8 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ -# Well, this is dumb: -sed -i "s,python-3.8-embed,python-3.9-embed," meson.build +zcat $CWD/glade.ftbfs.diff.gz | patch -p1 --verbose || exit 1 +zcat $CWD/glade.remove.extra.da.from.LINGUAS.diff.gz | patch -p1 --verbose || exit 1 # Configure, build, and install: export CFLAGS="$SLKCFLAGS" @@ -100,6 +100,7 @@ meson setup \ --localstatedir=/var \ --buildtype=release \ -Dgladeui=true \ + -Dgtk_doc=false \ .. || exit 1 "${NINJA:=ninja}" $NUMJOBS || exit 1 DESTDIR=$PKG $NINJA install || exit 1 diff --git a/source/l/glade/glade.ftbfs.diff b/source/l/glade/glade.ftbfs.diff new file mode 100644 index 00000000..d9516925 --- /dev/null +++ b/source/l/glade/glade.ftbfs.diff @@ -0,0 +1,18 @@ +--- ./data/meson.build.orig 2020-11-20 15:02:11.854337200 -0600 ++++ ./data/meson.build 2022-02-16 13:40:12.980091649 -0600 +@@ -2,7 +2,6 @@ + desktop_conf.set('VERSION', glade_version) + + i18n.merge_file( +- 'desktop', + type: 'desktop', + input: configure_file( + input: 'org.gnome.Glade.desktop.in.in', +@@ -18,7 +17,6 @@ + appdata = glade_name + '.appdata.xml' + + i18n.merge_file( +- 'appdata', + input: 'org.gnome.Glade.appdata.xml.in', + output: '@BASENAME@', + po_dir: po_dir, diff --git a/source/l/glade/glade.remove.extra.da.from.LINGUAS.diff b/source/l/glade/glade.remove.extra.da.from.LINGUAS.diff new file mode 100644 index 00000000..e9679abe --- /dev/null +++ b/source/l/glade/glade.remove.extra.da.from.LINGUAS.diff @@ -0,0 +1,9 @@ +--- ./help/LINGUAS.orig 2020-11-20 15:02:11.862337000 -0600 ++++ ./help/LINGUAS 2022-02-16 13:50:32.440105506 -0600 +@@ -1,6 +1,5 @@ + # please keep this list sorted alphabetically + # +-da + bg + ca + cs diff --git a/source/l/glibc/glibc-c-utf8-locale.patch b/source/l/glibc/glibc-c-utf8-locale.patch deleted file mode 100644 index 7fabf303..00000000 --- a/source/l/glibc/glibc-c-utf8-locale.patch +++ /dev/null @@ -1,270 +0,0 @@ -From 2eda7b462b415105f5a05c1323372d4e39d46439 Mon Sep 17 00:00:00 2001 -From: Mike FABIAN <mfabian@redhat.com> -Date: Mon, 10 Aug 2015 15:58:12 +0200 -Subject: [PATCH] Add a C.UTF-8 locale - ---- - localedata/SUPPORTED | 1 + - localedata/locales/C | 238 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 239 insertions(+) - create mode 100644 localedata/locales/C - -diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED -index 8ca023e..2a78391 100644 ---- a/localedata/SUPPORTED -+++ b/localedata/SUPPORTED -@@ -1,6 +1,7 @@ - # This file names the currently supported and somewhat tested locales. - # If you have any additions please file a glibc bug report. - SUPPORTED-LOCALES=\ -+C.UTF-8/UTF-8 \ - aa_DJ.UTF-8/UTF-8 \ - aa_DJ/ISO-8859-1 \ - aa_ER/UTF-8 \ -diff --git a/localedata/locales/C b/localedata/locales/C -new file mode 100644 -index 0000000..fdf460e ---- /dev/null -+++ b/localedata/locales/C -@@ -0,0 +1,238 @@ -+escape_char / -+comment_char % -+% Locale for C locale in UTF-8 -+ -+LC_IDENTIFICATION -+title "C locale" -+source "" -+address "" -+contact "" -+email "mfabian@redhat.com" -+tel "" -+fax "" -+language "C" -+territory "" -+revision "1.0" -+date "2015-08-10" -+% -+category "i18n:2012";LC_IDENTIFICATION -+category "i18n:2012";LC_CTYPE -+category "i18n:2012";LC_COLLATE -+category "i18n:2012";LC_TIME -+category "i18n:2012";LC_NUMERIC -+category "i18n:2012";LC_MONETARY -+category "i18n:2012";LC_MESSAGES -+category "i18n:2012";LC_PAPER -+category "i18n:2012";LC_NAME -+category "i18n:2012";LC_ADDRESS -+category "i18n:2012";LC_TELEPHONE -+category "i18n:2012";LC_MEASUREMENT -+END LC_IDENTIFICATION -+ -+LC_CTYPE -+copy "i18n" -+ -+translit_start -+include "translit_combining";"" -+translit_end -+ -+END LC_CTYPE -+ -+LC_COLLATE -+order_start forward -+<U0000> -+.. -+<UFFFF> -+<U10000> -+.. -+<U1FFFF> -+<U20000> -+.. -+<U2FFFF> -+<UE0000> -+.. -+<UEFFFF> -+<UF0000> -+.. -+<UFFFFF> -+<U100000> -+.. -+<U10FFFF> -+UNDEFINED -+order_end -+END LC_COLLATE -+ -+LC_MONETARY -+% This is the 14652 i18n fdcc-set definition for -+% the LC_MONETARY category -+% (except for the int_curr_symbol and currency_symbol, they are empty in -+% the 14652 i18n fdcc-set definition and also empty in -+% glibc/locale/C-monetary.c. But localedef complains in that case). -+% -+% Using "USD" for int_curr_symbol. But maybe "XXX" would be better? -+% XXX is "No currency" (https://en.wikipedia.org/wiki/ISO_4217) -+int_curr_symbol "<U0055><U0053><U0044><U0020>" -+% Using "$" for currency_symbol. But maybe <U00A4> would be better? -+% U+00A4 is the "generic currency symbol" -+% (https://en.wikipedia.org/wiki/Currency_sign_%28typography%29) -+currency_symbol "<U0024>" -+mon_decimal_point "<U002E>" -+mon_thousands_sep "" -+mon_grouping -1 -+positive_sign "" -+negative_sign "<U002D>" -+int_frac_digits -1 -+frac_digits -1 -+p_cs_precedes -1 -+int_p_sep_by_space -1 -+p_sep_by_space -1 -+n_cs_precedes -1 -+int_n_sep_by_space -1 -+n_sep_by_space -1 -+p_sign_posn -1 -+n_sign_posn -1 -+% -+END LC_MONETARY -+ -+LC_NUMERIC -+% This is the POSIX Locale definition for -+% the LC_NUMERIC category. -+% -+decimal_point "<U002E>" -+thousands_sep "" -+grouping -1 -+END LC_NUMERIC -+ -+LC_TIME -+% This is the POSIX Locale definition for -+% the LC_TIME category. -+% -+% Abbreviated weekday names (%a) -+abday "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/ -+ "<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/ -+ "<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/ -+ "<U0053><U0061><U0074>" -+ -+% Full weekday names (%A) -+day "<U0053><U0075><U006E><U0064><U0061><U0079>";/ -+ "<U004D><U006F><U006E><U0064><U0061><U0079>";/ -+ "<U0054><U0075><U0065><U0073><U0064><U0061><U0079>";/ -+ "<U0057><U0065><U0064><U006E><U0065><U0073><U0064><U0061><U0079>";/ -+ "<U0054><U0068><U0075><U0072><U0073><U0064><U0061><U0079>";/ -+ "<U0046><U0072><U0069><U0064><U0061><U0079>";/ -+ "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>" -+ -+% Abbreviated month names (%b) -+abmon "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/ -+ "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/ -+ "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/ -+ "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/ -+ "<U0053><U0065><U0070>";"<U004F><U0063><U0074>";/ -+ "<U004E><U006F><U0076>";"<U0044><U0065><U0063>" -+ -+% Full month names (%B) -+mon "<U004A><U0061><U006E><U0075><U0061><U0072><U0079>";/ -+ "<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0079>";/ -+ "<U004D><U0061><U0072><U0063><U0068>";/ -+ "<U0041><U0070><U0072><U0069><U006C>";/ -+ "<U004D><U0061><U0079>";/ -+ "<U004A><U0075><U006E><U0065>";/ -+ "<U004A><U0075><U006C><U0079>";/ -+ "<U0041><U0075><U0067><U0075><U0073><U0074>";/ -+ "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/ -+ "<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/ -+ "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/ -+ "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>" -+ -+% Week description, consists of three fields: -+% 1. Number of days in a week. -+% 2. Gregorian date that is a first weekday (19971130 for Sunday, 19971201 for Monday). -+% 3. The weekday number to be contained in the first week of the year. -+% -+% ISO 8601 conforming applications should use the values 7, 19971201 (a -+% Monday), and 4 (Thursday), respectively. -+week 7;19971201;4 -+first_weekday 1 -+first_workday 1 -+ -+% Appropriate date and time representation (%c) -+% "%a %b %e %H:%M:%S %Y" -+d_t_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0059>" -+ -+% Appropriate date representation (%x) -+% "%m/%d/%y" -+d_fmt "<U0025><U006D><U002F><U0025><U0064><U002F><U0025><U0079>" -+ -+% Appropriate time representation (%X) -+% "%H:%M:%S" -+t_fmt "<U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>" -+ -+% Appropriate AM/PM time representation (%r) -+% "%I:%M:%S %p" -+t_fmt_ampm "<U0025><U0049><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0070>" -+ -+% Equivalent of AM/PM (%p) "AM"/"PM" -+% -+am_pm "<U0041><U004D>";"<U0050><U004D>" -+ -+% Appropriate date representation (date(1)) "%a %b %e %H:%M:%S %Z %Y" -+date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U0020><U0025><U0059>" -+END LC_TIME -+ -+LC_MESSAGES -+% This is the POSIX Locale definition for -+% the LC_NUMERIC category. -+% -+yesexpr "<U005E><U005B><U0079><U0059><U005D>" -+noexpr "<U005E><U005B><U006E><U004E><U005D>" -+yesstr "<U0059><U0065><U0073>" -+nostr "<U004E><U006F>" -+END LC_MESSAGES -+ -+LC_PAPER -+% This is the ISO/IEC 14652 "i18n" definition for -+% the LC_PAPER category. -+% (A4 paper, this is also used in the built in C/POSIX -+% locale in glibc/locale/C-paper.c) -+height 297 -+width 210 -+END LC_PAPER -+ -+LC_NAME -+% This is the ISO/IEC 14652 "i18n" definition for -+% the LC_NAME category. -+% "%p%t%g%t%m%t%f" -+% (also used in the built in C/POSIX locale in glibc/locale/C-name.c) -+name_fmt "<U0025><U0070><U0025><U0074><U0025><U0067><U0025><U0074>/ -+<U0025><U006D><U0025><U0074><U0025><U0066>" -+END LC_NAME -+ -+LC_ADDRESS -+% This is the ISO/IEC 14652 "i18n" definition for -+% the LC_ADDRESS category. -+% "%a%N%f%N%d%N%b%N%s %h %e %r%N%C-%z %T%N%c%N" -+% (also used in the built in C/POSIX locale in glibc/locale/C-address.c) -+postal_fmt "<U0025><U0061><U0025><U004E><U0025><U0066><U0025><U004E>/ -+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/ -+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/ -+<U004E><U0025><U0043><U002D><U0025><U007A><U0020><U0025><U0054><U0025>/ -+<U004E><U0025><U0063><U0025><U004E>" -+END LC_ADDRESS -+ -+LC_TELEPHONE -+% This is the ISO/IEC 14652 "i18n" definition for -+% the LC_TELEPHONE category. -+% "+%c %a %l" -+tel_int_fmt "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/ -+<U006C>" -+% (also used in the built in C/POSIX locale in glibc/locale/C-telephone.c) -+END LC_TELEPHONE -+ -+LC_MEASUREMENT -+% This is the ISO/IEC 14652 "i18n" definition for -+% the LC_MEASUREMENT category. -+% (same as in the built in C/POSIX locale in glibc/locale/C-measurement.c) -+%metric -+measurement 1 -+END LC_MEASUREMENT -+ --- -2.4.3 - diff --git a/source/l/glibc/glibc.SlackBuild b/source/l/glibc/glibc.SlackBuild index 7a1a5d5d..f1eb962f 100755 --- a/source/l/glibc/glibc.SlackBuild +++ b/source/l/glibc/glibc.SlackBuild @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2006, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2006, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=glibc VERSION=${VERSION:-$(echo glibc-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} CHECKOUT=${CHECKOUT:-""} -BUILD=${BUILD:-5} +BUILD=${BUILD:-1} # I was considering disabling NSCD, but MoZes talked me out of it. :) #DISABLE_NSCD=" --disable-nscd " @@ -151,8 +151,6 @@ apply_patches() { zcat $CWD/glibc.locale.no-archive.diff.gz | patch -p1 --verbose || exit 1 # Support ru_RU.CP1251 locale: zcat $CWD/glibc.ru_RU.CP1251.diff.gz | patch -p1 --verbose || exit 1 - # Add a C.UTF-8 locale: - zcat $CWD/glibc-c-utf8-locale.patch.gz | patch -p1 --verbose || exit 1 # Don't use AM/PM format for date(1). That's just plain crazy. zcat $CWD/glibc-2.32.en_US.no.am.pm.date.format.diff.gz | patch -p1 --verbose || exit 1 # Other regression fixes from git: @@ -404,7 +402,24 @@ cp -a $PKG/lib${LIBDIRSUFFIX}/* lib${LIBDIRSUFFIX} ( cd lib${LIBDIRSUFFIX} mkdir incoming mv *so* incoming - mv incoming/libSegFault.so . + mv incoming/libmemusage.so . + # Beginning with glibc-2.34, shared objects are using their ABI sonames + # directly, which is frankly, a terrible idea. It might help other package + # managers, but doesn't do us any favors where we already had a system for + # dealing with upgrades (and downgrades!). We'll change these libraries to + # use the versioned naming system of glibc-2.33 and earlier so that we don't + # have to handle these files differently and so that it's easy to see what + # version of glibc is in use at a glance. + cd incoming + for library in *.so.* ; do + mv $library $(echo $library | cut -f 1 -d .)-${VERSION}.so + done + # This one is a special case. We don't want an $ARCH embedded in the + # filename. It prevents using the same install scripts on all $ARCH + # and does no good since we'll never have multiple $ARCH libraries + # installed in the same directory anyway. So give it the previous name + # format: + mv ld-linux*-${VERSION}.so ld-${VERSION}.so ) mkdir -p usr cp -a $PKG/usr/bin usr @@ -460,7 +475,24 @@ fix_doinst ( cd lib${LIBDIRSUFFIX} mkdir incoming mv *so* incoming - mv incoming/libSegFault.so . + mv incoming/libmemusage.so . + # Beginning with glibc-2.34, shared objects are using their ABI sonames + # directly, which is frankly, a terrible idea. It might help other package + # managers, but doesn't do us any favors where we already had a system for + # dealing with upgrades (and downgrades!). We'll change these libraries to + # use the versioned naming system of glibc-2.33 and earlier so that we don't + # have to handle these files differently and so that it's easy to see what + # version of glibc is in use at a glance. + cd incoming + for library in *.so.* ; do + mv $library $(echo $library | cut -f 1 -d .)-${VERSION}.so + done + # This one is a special case. We don't want an $ARCH embedded in the + # filename. It prevents using the same install scripts on all $ARCH + # and does no good since we'll never have multiple $ARCH libraries + # installed in the same directory anyway. So give it the previous name + # format: + mv ld-linux*-${VERSION}.so ld-${VERSION}.so ) # Build the package: /sbin/makepkg -l y -c n $TMP/glibc-$VERSION-$SLACKWARE_ARCH-$BUILD.txz diff --git a/source/l/glibc/patches/0001-nsswitch-return-result-when-nss-database-is-locked.patch b/source/l/glibc/patches/0001-nsswitch-return-result-when-nss-database-is-locked.patch deleted file mode 100644 index 45836925..00000000 --- a/source/l/glibc/patches/0001-nsswitch-return-result-when-nss-database-is-locked.patch +++ /dev/null @@ -1,47 +0,0 @@ -From c3479fb7939898ec22c655c383454d6e8b982a67 Mon Sep 17 00:00:00 2001 -From: Sergei Trofimovich <slyfox@gentoo.org> -Date: Fri, 5 Feb 2021 07:32:18 +0000 -Subject: [PATCH] nsswitch: return result when nss database is locked [BZ - #27343] - -Before the change nss_database_check_reload_and_get() did not populate -the '*result' value when it returned success in a case of chroot -detection. This caused initgroups() to use garage pointer in the -following test (extracted from unbound): - -``` - -int main() { - // load some NSS modules - struct passwd * pw = getpwnam("root"); - - chdir("/tmp"); - chroot("/tmp"); - chdir("/"); - // access nsswitch.conf in a chroot - initgroups("root", 0); -} -``` - -Reviewed-by: DJ Delorie <dj@redhat.com> ---- - nss/nss_database.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/nss/nss_database.c b/nss/nss_database.c -index cf0306adc4..e1bef6bd75 100644 ---- a/nss/nss_database.c -+++ b/nss/nss_database.c -@@ -398,8 +398,9 @@ nss_database_check_reload_and_get (struct nss_database_state *local, - && (str.st_ino != local->root_ino - || str.st_dev != local->root_dev))) - { -- /* Change detected; disable reloading. */ -+ /* Change detected; disable reloading and return current state. */ - atomic_store_release (&local->data.reload_disabled, 1); -+ *result = local->data.services[database_index]; - __libc_lock_unlock (local->lock); - __nss_module_disable_loading (); - return true; --- -2.27.0 diff --git a/source/l/glibc/patches/CVE-2021-27645.patch b/source/l/glibc/patches/CVE-2021-27645.patch deleted file mode 100644 index c568dd16..00000000 --- a/source/l/glibc/patches/CVE-2021-27645.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- ./nscd/netgroupcache.c.orig 2021-08-07 13:20:02.459057859 -0500 -+++ ./nscd/netgroupcache.c 2021-08-07 13:22:08.983060689 -0500 -@@ -248,7 +248,7 @@ - : NULL); - ndomain = (ndomain ? newbuf + ndomaindiff - : NULL); -- buffer = newbuf; -+ *tofreep = buffer = newbuf; - } - - nhost = memcpy (buffer + bufused, -@@ -319,7 +319,7 @@ - else if (status == NSS_STATUS_TRYAGAIN && e == ERANGE) - { - buflen *= 2; -- buffer = xrealloc (buffer, buflen); -+ *tofreep = buffer = xrealloc (buffer, buflen); - } - else if (status == NSS_STATUS_RETURN - || status == NSS_STATUS_NOTFOUND diff --git a/source/l/glibc/patches/CVE-2021-33574_1.patch b/source/l/glibc/patches/CVE-2021-33574_1.patch deleted file mode 100644 index 20f1889c..00000000 --- a/source/l/glibc/patches/CVE-2021-33574_1.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 42d359350510506b87101cf77202fefcbfc790cb Mon Sep 17 00:00:00 2001 -From: Andreas Schwab <schwab@linux-m68k.org> -Date: Thu, 27 May 2021 12:49:47 +0200 -Subject: [PATCH] Use __pthread_attr_copy in mq_notify (bug 27896) - -Make a deep copy of the pthread attribute object to remove a potential -use-after-free issue. ---- - NEWS | 4 ++++ - sysdeps/unix/sysv/linux/mq_notify.c | 15 ++++++++++----- - 2 files changed, 14 insertions(+), 5 deletions(-) - -diff --git a/NEWS b/NEWS -index 6f4d325d55..1bf3daa502 100644 ---- a/NEWS -+++ b/NEWS -@@ -62,6 +62,10 @@ Security related changes: - potentially resulting in degraded service or Denial of Service on the - local system. Reported by Chris Schanzle. - -+ CVE-2021-33574: The mq_notify function has a potential use-after-free -+ issue when using a notification type of SIGEV_THREAD and a thread -+ attribute with a non-default affinity mask. -+ - The following bugs are resolved with this release: - - [The release manager will add the list generated by -diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c -index cc575a0cdd..f7ddfe5a6c 100644 ---- a/sysdeps/unix/sysv/linux/mq_notify.c -+++ b/sysdeps/unix/sysv/linux/mq_notify.c -@@ -133,8 +133,11 @@ helper_thread (void *arg) - (void) __pthread_barrier_wait (¬ify_barrier); - } - else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED) -- /* The only state we keep is the copy of the thread attributes. */ -- free (data.attr); -+ { -+ /* The only state we keep is the copy of the thread attributes. */ -+ pthread_attr_destroy (data.attr); -+ free (data.attr); -+ } - } - return NULL; - } -@@ -255,8 +258,7 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification) - if (data.attr == NULL) - return -1; - -- memcpy (data.attr, notification->sigev_notify_attributes, -- sizeof (pthread_attr_t)); -+ __pthread_attr_copy (data.attr, notification->sigev_notify_attributes); - } - - /* Construct the new request. */ -@@ -270,7 +272,10 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification) - - /* If it failed, free the allocated memory. */ - if (__glibc_unlikely (retval != 0)) -- free (data.attr); -+ { -+ pthread_attr_destroy (data.attr); -+ free (data.attr); -+ } - - return retval; - } --- -2.27.0 - - diff --git a/source/l/glibc/patches/CVE-2021-33574_2.patch b/source/l/glibc/patches/CVE-2021-33574_2.patch deleted file mode 100644 index 608dbfdc..00000000 --- a/source/l/glibc/patches/CVE-2021-33574_2.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 217b6dc298156bdb0d6aea9ea93e7e394a5ff091 Mon Sep 17 00:00:00 2001 -From: Florian Weimer <fweimer@redhat.com> -Date: Tue, 1 Jun 2021 17:51:41 +0200 -Subject: [PATCH] Fix use of __pthread_attr_copy in mq_notify (bug 27896) - -__pthread_attr_copy can fail and does not initialize the attribute -structure in that case. - -If __pthread_attr_copy is never called and there is no allocated -attribute, pthread_attr_destroy should not be called, otherwise -there is a null pointer dereference in rt/tst-mqueue6. - -Fixes commit 42d359350510506b87101cf77202fefcbfc790cb -("Use __pthread_attr_copy in mq_notify (bug 27896)"). - -Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> ---- - sysdeps/unix/sysv/linux/mq_notify.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c -index f7ddfe5a6c..6f46d29d1d 100644 ---- a/sysdeps/unix/sysv/linux/mq_notify.c -+++ b/sysdeps/unix/sysv/linux/mq_notify.c -@@ -258,7 +258,14 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification) - if (data.attr == NULL) - return -1; - -- __pthread_attr_copy (data.attr, notification->sigev_notify_attributes); -+ int ret = __pthread_attr_copy (data.attr, -+ notification->sigev_notify_attributes); -+ if (ret != 0) -+ { -+ free (data.attr); -+ __set_errno (ret); -+ return -1; -+ } - } - - /* Construct the new request. */ -@@ -271,7 +278,7 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification) - int retval = INLINE_SYSCALL (mq_notify, 2, mqdes, &se); - - /* If it failed, free the allocated memory. */ -- if (__glibc_unlikely (retval != 0)) -+ if (retval != 0 && data.attr != NULL) - { - pthread_attr_destroy (data.attr); - free (data.attr); --- -2.27.0 - - diff --git a/source/l/glibc/patches/CVE-2021-35942.patch b/source/l/glibc/patches/CVE-2021-35942.patch deleted file mode 100644 index fde0fbdb..00000000 --- a/source/l/glibc/patches/CVE-2021-35942.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 5adda61f62b77384718b4c0d8336ade8f2b4b35c Mon Sep 17 00:00:00 2001 -From: Andreas Schwab <schwab@linux-m68k.org> -Date: Fri, 25 Jun 2021 15:02:47 +0200 -Subject: [PATCH] wordexp: handle overflow in positional parameter number (bug - 28011) - -Use strtoul instead of atoi so that overflow can be detected. ---- - posix/wordexp-test.c | 1 + - posix/wordexp.c | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c -index f93a546d7e..9df02dbbb3 100644 ---- a/posix/wordexp-test.c -+++ b/posix/wordexp-test.c -@@ -183,6 +183,7 @@ struct test_case_struct - { 0, NULL, "$var", 0, 0, { NULL, }, IFS }, - { 0, NULL, "\"\\n\"", 0, 1, { "\\n", }, IFS }, - { 0, NULL, "", 0, 0, { NULL, }, IFS }, -+ { 0, NULL, "${1234567890123456789012}", 0, 0, { NULL, }, IFS }, - - /* Flags not already covered (testit() has special handling for these) */ - { 0, NULL, "one two", WRDE_DOOFFS, 2, { "one", "two", }, IFS }, -diff --git a/posix/wordexp.c b/posix/wordexp.c -index bcbe96e48d..1f3b09f721 100644 ---- a/posix/wordexp.c -+++ b/posix/wordexp.c -@@ -1399,7 +1399,7 @@ envsubst: - /* Is it a numeric parameter? */ - else if (isdigit (env[0])) - { -- int n = atoi (env); -+ unsigned long n = strtoul (env, NULL, 10); - - if (n >= __libc_argc) - /* Substitute NULL. */ --- -2.27.0 - - diff --git a/source/l/glibc/patches/CVE-2021-38604.patch b/source/l/glibc/patches/CVE-2021-38604.patch deleted file mode 100644 index ad0a8158..00000000 --- a/source/l/glibc/patches/CVE-2021-38604.patch +++ /dev/null @@ -1,40 +0,0 @@ -From b805aebd42364fe696e417808a700fdb9800c9e8 Mon Sep 17 00:00:00 2001 -From: Nikita Popov <npv1310@gmail.com> -Date: Mon, 9 Aug 2021 20:17:34 +0530 -Subject: [PATCH] librt: fix NULL pointer dereference (bug 28213) - -Helper thread frees copied attribute on NOTIFY_REMOVED message -received from the OS kernel. Unfortunately, it fails to check whether -copied attribute actually exists (data.attr != NULL). This worked -earlier because free() checks passed pointer before actually -attempting to release corresponding memory. But -__pthread_attr_destroy assumes pointer is not NULL. - -So passing NULL pointer to __pthread_attr_destroy will result in -segmentation fault. This scenario is possible if -notification->sigev_notify_attributes == NULL (which means default -thread attributes should be used). - -Signed-off-by: Nikita Popov <npv1310@gmail.com> -Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> ---- - sysdeps/unix/sysv/linux/mq_notify.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c -index 9799dcdaa4..eccae2e4c6 100644 ---- a/sysdeps/unix/sysv/linux/mq_notify.c -+++ b/sysdeps/unix/sysv/linux/mq_notify.c -@@ -131,7 +131,7 @@ helper_thread (void *arg) - to wait until it is done with it. */ - (void) __pthread_barrier_wait (¬ify_barrier); - } -- else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED) -+ else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED && data.attr != NULL) - { - /* The only state we keep is the copy of the thread attributes. */ - __pthread_attr_destroy (data.attr); --- -2.27.0 - - diff --git a/source/l/glibc/patches/cdc31409bd4f878577059e70dbd52a28643ec609.patch b/source/l/glibc/patches/cdc31409bd4f878577059e70dbd52a28643ec609.patch deleted file mode 100644 index 96f56ce7..00000000 --- a/source/l/glibc/patches/cdc31409bd4f878577059e70dbd52a28643ec609.patch +++ /dev/null @@ -1,237 +0,0 @@ -From cdc31409bd4f878577059e70dbd52a28643ec609 Mon Sep 17 00:00:00 2001 -From: Adhemerval Zanella <adhemerval.zanella@linaro.org> -Date: Wed, 31 Mar 2021 13:53:34 -0300 -Subject: [PATCH] linux: Normalize and return timeout on select (BZ #27651) - -The commit 2433d39b697, which added time64 support to select, changed -the function to use __NR_pselect6 (or __NR_pelect6_time64) on all -architectures. However, on architectures where the symbol was -implemented with __NR_select the kernel normalizes the passed timeout -instead of return EINVAL. For instance, the input timeval -{ 0, 5000000 } is interpreted as { 5, 0 }. - -And as indicated by BZ #27651, this semantic seems to be expected -and changing it results in some performance issues (most likely -the program does not check the return code and keeps issuing -select with unormalized tv_usec argument). - -To avoid a different semantic depending whether which syscall the -architecture used to issue, select now always normalize the timeout -input. This is a slight change for some ABIs (for instance aarch64). - -Checked on x86_64-linux-gnu and i686-linux-gnu. ---- - include/time.h | 5 +++ - sunrpc/svcauth_des.c | 1 - - support/Makefile | 2 ++ - support/support.h | 8 +++++ - support/support_select_modify_timeout.c | 29 ++++++++++++++++ - support/support_select_normalize_timeout.c | 29 ++++++++++++++++ - sysdeps/unix/sysv/linux/select.c | 40 ++++++++++++++++++---- - 8 files changed, 123 insertions(+), 8 deletions(-) - create mode 100644 support/support_select_modify_timeout.c - create mode 100644 support/support_select_normalize_timeout.c - -diff --git a/include/time.h b/include/time.h -index caf2af5e74..e0636132a6 100644 ---- a/include/time.h -+++ b/include/time.h -@@ -502,6 +502,11 @@ time_now (void) - __clock_gettime (TIME_CLOCK_GETTIME_CLOCKID, &ts); - return ts.tv_sec; - } -+ -+#define NSEC_PER_SEC 1000000000L /* Nanoseconds per second. */ -+#define USEC_PER_SEC 1000000L /* Microseconds per second. */ -+#define NSEC_PER_USEC 1000L /* Nanoseconds per microsecond. */ -+ - #endif - - #endif -diff --git a/sunrpc/svcauth_des.c b/sunrpc/svcauth_des.c -index 7607abc818..25a85c9097 100644 ---- a/sunrpc/svcauth_des.c -+++ b/sunrpc/svcauth_des.c -@@ -58,7 +58,6 @@ - - #define debug(msg) /*printf("svcauth_des: %s\n", msg) */ - --#define USEC_PER_SEC ((uint32_t) 1000000L) - #define BEFORE(t1, t2) timercmp(t1, t2, <) - - /* -diff --git a/support/Makefile b/support/Makefile -index 900e17f94f..1e2fc97ee6 100644 ---- a/support/Makefile -+++ b/support/Makefile -@@ -68,6 +68,8 @@ libsupport-routines = \ - support_quote_string \ - support_record_failure \ - support_run_diff \ -+ support_select_modify_timeout \ -+ support_select_normalize_timeout \ - support_set_small_thread_stack_size \ - support_shared_allocate \ - support_small_stack_thread_attribute \ -diff --git a/support/support.h b/support/support.h -index e023d00857..f983783d64 100644 ---- a/support/support.h -+++ b/support/support.h -@@ -144,6 +144,14 @@ static __inline bool support_path_support_time64 (const char *path) - /* Return true if stat supports nanoseconds resolution. */ - extern bool support_stat_nanoseconds (const char *path); - -+/* Return true if select modify the timeout to reflect the amount of time -+ no slept. */ -+extern bool support_select_modify_timeout (void); -+ -+/* Return true if select normalize the timeout input by taking in account -+ tv_usec larger than 1000000. */ -+extern bool support_select_normalize_timeout (void); -+ - __END_DECLS - - #endif /* SUPPORT_H */ -diff --git a/support/support_select_modify_timeout.c b/support/support_select_modify_timeout.c -new file mode 100644 -index 0000000000..d70a5a5068 ---- /dev/null -+++ b/support/support_select_modify_timeout.c -@@ -0,0 +1,29 @@ -+/* Return whether select modify the timeout. -+ Copyright (C) 2021 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ <https://www.gnu.org/licenses/>. */ -+ -+#include <stdbool.h> -+ -+bool -+support_select_modify_timeout (void) -+{ -+#ifdef __linux__ -+ return true; -+#else -+ return false; -+#endif -+} -diff --git a/support/support_select_normalize_timeout.c b/support/support_select_normalize_timeout.c -new file mode 100644 -index 0000000000..447e3ec3e3 ---- /dev/null -+++ b/support/support_select_normalize_timeout.c -@@ -0,0 +1,29 @@ -+/* Return whether select normalize the timeout. -+ Copyright (C) 2021 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ <https://www.gnu.org/licenses/>. */ -+ -+#include <stdbool.h> -+ -+bool -+support_select_normalize_timeout (void) -+{ -+#ifdef __linux__ -+ return true; -+#else -+ return false; -+#endif -+} -diff --git a/sysdeps/unix/sysv/linux/select.c b/sysdeps/unix/sysv/linux/select.c -index 415aa87d3c..d075270ff4 100644 ---- a/sysdeps/unix/sysv/linux/select.c -+++ b/sysdeps/unix/sysv/linux/select.c -@@ -33,12 +33,34 @@ int - __select64 (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - struct __timeval64 *timeout) - { -- struct __timespec64 ts64, *pts64 = NULL; -- if (timeout != NULL) -+ __time64_t s = timeout != NULL ? timeout->tv_sec : 0; -+ int32_t us = timeout != NULL ? timeout->tv_usec : 0; -+ int32_t ns; -+ -+ if (s < 0 || us < 0) -+ return INLINE_SYSCALL_ERROR_RETURN_VALUE (EINVAL); -+ -+ /* Normalize the timeout, as legacy Linux __NR_select and __NR__newselect. -+ Different than syscall, it also handle possible overflow. */ -+ if (us / USEC_PER_SEC > INT64_MAX - s) - { -- ts64 = timeval64_to_timespec64 (*timeout); -- pts64 = &ts64; -+ s = INT64_MAX; -+ ns = NSEC_PER_SEC - 1; - } -+ else -+ { -+ s += us / USEC_PER_SEC; -+ us = us % USEC_PER_SEC; -+ ns = us * NSEC_PER_USEC; -+ } -+ -+ struct __timespec64 ts64, *pts64 = NULL; -+ if (timeout != NULL) -+ { -+ ts64.tv_sec = s; -+ ts64.tv_nsec = ns; -+ pts64 = &ts64; -+ } - - #ifndef __NR_pselect6_time64 - # define __NR_pselect6_time64 __NR_pselect6 -@@ -52,10 +74,13 @@ __select64 (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - (though the pselect() glibc call suppresses this behavior). - Since select() on Linux has the same behavior as the pselect6 - syscall, we update the timeout here. */ -- if (r == 0 || errno != ENOSYS) -+ if (r >= 0 || errno != ENOSYS) - { - if (timeout != NULL) -- TIMEVAL_TO_TIMESPEC (timeout, &ts64); -+ { -+ timeout->tv_sec = ts64.tv_sec; -+ timeout->tv_usec = ts64.tv_nsec / NSEC_PER_USEC; -+ } - return r; - } - -@@ -71,7 +96,8 @@ __select64 (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, - __set_errno (EINVAL); - return -1; - } -- ts32 = valid_timespec64_to_timespec (ts64); -+ ts32.tv_sec = s; -+ ts32.tv_nsec = ns; - pts32 = &ts32; - } - # ifndef __ASSUME_PSELECT --- -2.27.0 - - diff --git a/source/l/glibc/patches/glibc.CVE-2021-3998.patch b/source/l/glibc/patches/glibc.CVE-2021-3998.patch deleted file mode 100644 index 45602d05..00000000 --- a/source/l/glibc/patches/glibc.CVE-2021-3998.patch +++ /dev/null @@ -1,123 +0,0 @@ -From f7a79879c0b2bef0dadd6caaaeeb0d26423e04e5 Mon Sep 17 00:00:00 2001 -From: Siddhesh Poyarekar <siddhesh@sourceware.org> -Date: Thu, 13 Jan 2022 11:28:36 +0530 -Subject: [PATCH] realpath: Set errno to ENAMETOOLONG for result larger than - PATH_MAX [BZ #28770] - -realpath returns an allocated string when the result exceeds PATH_MAX, -which is unexpected when its second argument is not NULL. This results -in the second argument (resolved) being uninitialized and also results -in a memory leak since the caller expects resolved to be the same as the -returned value. - -Return NULL and set errno to ENAMETOOLONG if the result exceeds -PATH_MAX. This fixes [BZ #28770], which is CVE-2021-3998. - -Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> -Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> -(cherry picked from commit ee8d5e33adb284601c00c94687bc907e10aec9bb) ---- - NEWS | 4 +++ - stdlib/Makefile | 1 + - stdlib/canonicalize.c | 12 +++++++-- - stdlib/tst-realpath-toolong.c | 49 +++++++++++++++++++++++++++++++++++ - 4 files changed, 64 insertions(+), 2 deletions(-) - create mode 100644 stdlib/tst-realpath-toolong.c - ---- ./NEWS.orig 2021-02-01 11:15:33.000000000 -0600 -+++ ./NEWS 2022-01-24 13:32:24.268678228 -0600 -@@ -118,6 +118,10 @@ - CVE-2019-25013: A buffer overflow has been fixed in the iconv function when - invoked with EUC-KR input containing invalid multibyte input sequences. - -+ CVE-2021-3998: Passing a path longer than PATH_MAX to the realpath -+ function could result in a memory leak and potential access of -+ uninitialized memory. Reported by Qualys. -+ - The following bugs are resolved with this release: - - [10635] libc: realpath portability patches ---- ./stdlib/canonicalize.c.orig 2021-02-01 11:15:33.000000000 -0600 -+++ ./stdlib/canonicalize.c 2022-01-24 13:32:24.268678228 -0600 -@@ -400,8 +400,16 @@ - - error: - *dest++ = '\0'; -- if (resolved != NULL && dest - rname <= get_path_max ()) -- rname = strcpy (resolved, rname); -+ if (resolved != NULL) -+ { -+ if (dest - rname <= get_path_max ()) -+ rname = strcpy (resolved, rname); -+ else -+ { -+ failed = true; -+ __set_errno (ENAMETOOLONG); -+ } -+ } - - error_nomem: - scratch_buffer_free (&extra_buffer); ---- ./stdlib/Makefile.orig 2022-01-24 13:32:24.268678228 -0600 -+++ ./stdlib/Makefile 2022-01-24 13:32:59.968676254 -0600 -@@ -86,7 +86,7 @@ - tst-makecontext-align test-bz22786 tst-strtod-nan-sign \ - tst-swapcontext1 tst-setcontext4 tst-setcontext5 \ - tst-setcontext6 tst-setcontext7 tst-setcontext8 \ -- tst-setcontext9 tst-bz20544 tst-canon-bz26341 -+ tst-setcontext9 tst-bz20544 tst-canon-bz26341 tst-realpath-toolong - - tests-internal := tst-strtod1i tst-strtod3 tst-strtod4 tst-strtod5i \ - tst-tls-atexit tst-tls-atexit-nodelete ---- ./stdlib/tst-realpath-toolong.c.orig 2022-01-24 13:32:24.268678228 -0600 -+++ ./stdlib/tst-realpath-toolong.c 2022-01-24 13:32:24.268678228 -0600 -@@ -0,0 +1,49 @@ -+/* Verify that realpath returns NULL with ENAMETOOLONG if the result exceeds -+ NAME_MAX. -+ Copyright The GNU Toolchain Authors. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ <https://www.gnu.org/licenses/>. */ -+ -+#include <errno.h> -+#include <limits.h> -+#include <stdlib.h> -+#include <string.h> -+#include <unistd.h> -+#include <support/check.h> -+#include <support/temp_file.h> -+#include <sys/types.h> -+#include <sys/stat.h> -+ -+#define BASENAME "tst-realpath-toolong." -+ -+int -+do_test (void) -+{ -+ char *base = support_create_and_chdir_toolong_temp_directory (BASENAME); -+ -+ char buf[PATH_MAX + 1]; -+ const char *res = realpath (".", buf); -+ -+ /* canonicalize.c states that if the real path is >= PATH_MAX, then -+ realpath returns NULL and sets ENAMETOOLONG. */ -+ TEST_VERIFY (res == NULL); -+ TEST_VERIFY (errno == ENAMETOOLONG); -+ -+ free (base); -+ return 0; -+} -+ -+#include <support/test-driver.c> diff --git a/source/l/glibc/patches/glibc.CVE-2021-3999.patch b/source/l/glibc/patches/glibc.CVE-2021-3999.patch deleted file mode 100644 index 0644f798..00000000 --- a/source/l/glibc/patches/glibc.CVE-2021-3999.patch +++ /dev/null @@ -1,356 +0,0 @@ -From 472e799a5f2102bc0c3206dbd5a801765fceb39c Mon Sep 17 00:00:00 2001 -From: Siddhesh Poyarekar <siddhesh@sourceware.org> -Date: Fri, 21 Jan 2022 23:32:56 +0530 -Subject: [PATCH] getcwd: Set errno to ERANGE for size == 1 (CVE-2021-3999) - -No valid path returned by getcwd would fit into 1 byte, so reject the -size early and return NULL with errno set to ERANGE. This change is -prompted by CVE-2021-3999, which describes a single byte buffer -underflow and overflow when all of the following conditions are met: - -- The buffer size (i.e. the second argument of getcwd) is 1 byte -- The current working directory is too long -- '/' is also mounted on the current working directory - -Sequence of events: - -- In sysdeps/unix/sysv/linux/getcwd.c, the syscall returns ENAMETOOLONG - because the linux kernel checks for name length before it checks - buffer size - -- The code falls back to the generic getcwd in sysdeps/posix - -- In the generic func, the buf[0] is set to '\0' on line 250 - -- this while loop on line 262 is bypassed: - - while (!(thisdev == rootdev && thisino == rootino)) - - since the rootfs (/) is bind mounted onto the directory and the flow - goes on to line 449, where it puts a '/' in the byte before the - buffer. - -- Finally on line 458, it moves 2 bytes (the underflowed byte and the - '\0') to the buf[0] and buf[1], resulting in a 1 byte buffer overflow. - -- buf is returned on line 469 and errno is not set. - -This resolves BZ #28769. - -Reviewed-by: Andreas Schwab <schwab@linux-m68k.org> -Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> -Signed-off-by: Qualys Security Advisory <qsa@qualys.com> -Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> -(cherry picked from commit 23e0e8f5f1fb5ed150253d986ecccdc90c2dcd5e) ---- - NEWS | 6 + - sysdeps/posix/getcwd.c | 7 + - sysdeps/unix/sysv/linux/Makefile | 7 +- - .../unix/sysv/linux/tst-getcwd-smallbuff.c | 241 ++++++++++++++++++ - 4 files changed, 260 insertions(+), 1 deletion(-) - create mode 100644 sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c - -diff --git a/NEWS b/NEWS -index b4f81c2668..8d7467d2c1 100644 ---- a/NEWS -+++ b/NEWS -@@ -20,6 +20,12 @@ Security related changes: - function could result in a memory leak and potential access of - uninitialized memory. Reported by Qualys. - -+ CVE-2021-3999: Passing a buffer of size exactly 1 byte to the getcwd -+ function may result in an off-by-one buffer underflow and overflow -+ when the current working directory is longer than PATH_MAX and also -+ corresponds to the / directory through an unprivileged mount -+ namespace. Reported by Qualys. -+ - The following bugs are resolved with this release: - - [12889] nptl: Fix race between pthread_kill and thread exit -diff --git a/sysdeps/posix/getcwd.c b/sysdeps/posix/getcwd.c -index 13680026ff..b6984a382c 100644 ---- a/sysdeps/posix/getcwd.c -+++ b/sysdeps/posix/getcwd.c -@@ -187,6 +187,13 @@ __getcwd_generic (char *buf, size_t size) - size_t allocated = size; - size_t used; - -+ /* A size of 1 byte is never useful. */ -+ if (allocated == 1) -+ { -+ __set_errno (ERANGE); -+ return NULL; -+ } -+ - #if HAVE_MINIMALLY_WORKING_GETCWD - /* If AT_FDCWD is not defined, the algorithm below is O(N**2) and - this is much slower than the system getcwd (at least on -diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile -index 76ad06361c..9380d3848d 100644 ---- a/sysdeps/unix/sysv/linux/Makefile -+++ b/sysdeps/unix/sysv/linux/Makefile -@@ -331,7 +331,12 @@ sysdep_routines += xstatconv internal_statvfs \ - - sysdep_headers += bits/fcntl-linux.h - --tests += tst-fallocate tst-fallocate64 tst-o_path-locks -+tests += \ -+ tst-fallocate \ -+ tst-fallocate64 \ -+ tst-getcwd-smallbuff \ -+ tst-o_path-locks \ -+# tests - endif - - ifeq ($(subdir),elf) -diff --git a/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c b/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c -new file mode 100644 -index 0000000000..d460d6e766 ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/tst-getcwd-smallbuff.c -@@ -0,0 +1,241 @@ -+/* Verify that getcwd returns ERANGE for size 1 byte and does not underflow -+ buffer when the CWD is too long and is also a mount target of /. See bug -+ #28769 or CVE-2021-3999 for more context. -+ Copyright The GNU Toolchain Authors. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ <https://www.gnu.org/licenses/>. */ -+ -+#include <errno.h> -+#include <fcntl.h> -+#include <intprops.h> -+#include <limits.h> -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+#include <sys/mount.h> -+#include <sys/stat.h> -+#include <sys/types.h> -+#include <sys/wait.h> -+ -+#include <sys/socket.h> -+#include <sys/un.h> -+#include <support/check.h> -+#include <support/temp_file.h> -+#include <support/xsched.h> -+#include <support/xunistd.h> -+ -+static char *base; -+#define BASENAME "tst-getcwd-smallbuff" -+#define MOUNT_NAME "mpoint" -+static int sockfd[2]; -+ -+static void -+do_cleanup (void) -+{ -+ support_chdir_toolong_temp_directory (base); -+ TEST_VERIFY_EXIT (rmdir (MOUNT_NAME) == 0); -+ free (base); -+} -+ -+static void -+send_fd (const int sock, const int fd) -+{ -+ struct msghdr msg = {0}; -+ union -+ { -+ struct cmsghdr hdr; -+ char buf[CMSG_SPACE (sizeof (int))]; -+ } cmsgbuf = {0}; -+ struct cmsghdr *cmsg; -+ struct iovec vec; -+ char ch = 'A'; -+ ssize_t n; -+ -+ msg.msg_control = &cmsgbuf.buf; -+ msg.msg_controllen = sizeof (cmsgbuf.buf); -+ -+ cmsg = CMSG_FIRSTHDR (&msg); -+ cmsg->cmsg_len = CMSG_LEN (sizeof (int)); -+ cmsg->cmsg_level = SOL_SOCKET; -+ cmsg->cmsg_type = SCM_RIGHTS; -+ memcpy (CMSG_DATA (cmsg), &fd, sizeof (fd)); -+ -+ vec.iov_base = &ch; -+ vec.iov_len = 1; -+ msg.msg_iov = &vec; -+ msg.msg_iovlen = 1; -+ -+ while ((n = sendmsg (sock, &msg, 0)) == -1 && errno == EINTR); -+ -+ TEST_VERIFY_EXIT (n == 1); -+} -+ -+static int -+recv_fd (const int sock) -+{ -+ struct msghdr msg = {0}; -+ union -+ { -+ struct cmsghdr hdr; -+ char buf[CMSG_SPACE(sizeof(int))]; -+ } cmsgbuf = {0}; -+ struct cmsghdr *cmsg; -+ struct iovec vec; -+ ssize_t n; -+ char ch = '\0'; -+ int fd = -1; -+ -+ vec.iov_base = &ch; -+ vec.iov_len = 1; -+ msg.msg_iov = &vec; -+ msg.msg_iovlen = 1; -+ -+ msg.msg_control = &cmsgbuf.buf; -+ msg.msg_controllen = sizeof (cmsgbuf.buf); -+ -+ while ((n = recvmsg (sock, &msg, 0)) == -1 && errno == EINTR); -+ if (n != 1 || ch != 'A') -+ return -1; -+ -+ cmsg = CMSG_FIRSTHDR (&msg); -+ if (cmsg == NULL) -+ return -1; -+ if (cmsg->cmsg_type != SCM_RIGHTS) -+ return -1; -+ memcpy (&fd, CMSG_DATA (cmsg), sizeof (fd)); -+ if (fd < 0) -+ return -1; -+ return fd; -+} -+ -+static int -+child_func (void * const arg) -+{ -+ xclose (sockfd[0]); -+ const int sock = sockfd[1]; -+ char ch; -+ -+ TEST_VERIFY_EXIT (read (sock, &ch, 1) == 1); -+ TEST_VERIFY_EXIT (ch == '1'); -+ -+ if (mount ("/", MOUNT_NAME, NULL, MS_BIND | MS_REC, NULL)) -+ FAIL_EXIT1 ("mount failed: %m\n"); -+ const int fd = xopen ("mpoint", -+ O_RDONLY | O_PATH | O_DIRECTORY | O_NOFOLLOW, 0); -+ -+ send_fd (sock, fd); -+ xclose (fd); -+ -+ TEST_VERIFY_EXIT (read (sock, &ch, 1) == 1); -+ TEST_VERIFY_EXIT (ch == 'a'); -+ -+ xclose (sock); -+ return 0; -+} -+ -+static void -+update_map (char * const mapping, const char * const map_file) -+{ -+ const size_t map_len = strlen (mapping); -+ -+ const int fd = xopen (map_file, O_WRONLY, 0); -+ xwrite (fd, mapping, map_len); -+ xclose (fd); -+} -+ -+static void -+proc_setgroups_write (const long child_pid, const char * const str) -+{ -+ const size_t str_len = strlen(str); -+ -+ char setgroups_path[sizeof ("/proc//setgroups") + INT_STRLEN_BOUND (long)]; -+ -+ snprintf (setgroups_path, sizeof (setgroups_path), -+ "/proc/%ld/setgroups", child_pid); -+ -+ const int fd = open (setgroups_path, O_WRONLY); -+ -+ if (fd < 0) -+ { -+ TEST_VERIFY_EXIT (errno == ENOENT); -+ FAIL_UNSUPPORTED ("/proc/%ld/setgroups not found\n", child_pid); -+ } -+ -+ xwrite (fd, str, str_len); -+ xclose(fd); -+} -+ -+static char child_stack[1024 * 1024]; -+ -+int -+do_test (void) -+{ -+ base = support_create_and_chdir_toolong_temp_directory (BASENAME); -+ -+ xmkdir (MOUNT_NAME, S_IRWXU); -+ atexit (do_cleanup); -+ -+ TEST_VERIFY_EXIT (socketpair (AF_UNIX, SOCK_STREAM, 0, sockfd) == 0); -+ pid_t child_pid = xclone (child_func, NULL, child_stack, -+ sizeof (child_stack), -+ CLONE_NEWUSER | CLONE_NEWNS | SIGCHLD); -+ -+ xclose (sockfd[1]); -+ const int sock = sockfd[0]; -+ -+ char map_path[sizeof ("/proc//uid_map") + INT_STRLEN_BOUND (long)]; -+ char map_buf[sizeof ("0 1") + INT_STRLEN_BOUND (long)]; -+ -+ snprintf (map_path, sizeof (map_path), "/proc/%ld/uid_map", -+ (long) child_pid); -+ snprintf (map_buf, sizeof (map_buf), "0 %ld 1", (long) getuid()); -+ update_map (map_buf, map_path); -+ -+ proc_setgroups_write ((long) child_pid, "deny"); -+ snprintf (map_path, sizeof (map_path), "/proc/%ld/gid_map", -+ (long) child_pid); -+ snprintf (map_buf, sizeof (map_buf), "0 %ld 1", (long) getgid()); -+ update_map (map_buf, map_path); -+ -+ TEST_VERIFY_EXIT (send (sock, "1", 1, MSG_NOSIGNAL) == 1); -+ const int fd = recv_fd (sock); -+ TEST_VERIFY_EXIT (fd >= 0); -+ TEST_VERIFY_EXIT (fchdir (fd) == 0); -+ -+ static char buf[2 * 10 + 1]; -+ memset (buf, 'A', sizeof (buf)); -+ -+ /* Finally, call getcwd and check if it resulted in a buffer underflow. */ -+ char * cwd = getcwd (buf + sizeof (buf) / 2, 1); -+ TEST_VERIFY (cwd == NULL); -+ TEST_VERIFY (errno == ERANGE); -+ -+ for (int i = 0; i < sizeof (buf); i++) -+ if (buf[i] != 'A') -+ { -+ printf ("buf[%d] = %02x\n", i, (unsigned int) buf[i]); -+ support_record_failure (); -+ } -+ -+ TEST_VERIFY_EXIT (send (sock, "a", 1, MSG_NOSIGNAL) == 1); -+ xclose (sock); -+ TEST_VERIFY_EXIT (xwaitpid (child_pid, NULL, 0) == child_pid); -+ -+ return 0; -+} -+ -+#define CLEANUP_HANDLER do_cleanup -+#include <support/test-driver.c> --- -2.27.0 - - diff --git a/source/l/gobject-introspection/gobject-introspection.SlackBuild b/source/l/gobject-introspection/gobject-introspection.SlackBuild index aaf84951..9396474d 100755 --- a/source/l/gobject-introspection/gobject-introspection.SlackBuild +++ b/source/l/gobject-introspection/gobject-introspection.SlackBuild @@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gobject-introspection VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-1} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then diff --git a/source/l/gtk+2/gtk+2.SlackBuild b/source/l/gtk+2/gtk+2.SlackBuild index 7eff8c4c..a0ceb0f0 100755 --- a/source/l/gtk+2/gtk+2.SlackBuild +++ b/source/l/gtk+2/gtk+2.SlackBuild @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2016, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2016, 2018, 2022 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gtk+2 VERSION=${VERSION:-$(echo gtk+-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-2} +BUILD=${BUILD:-3} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -103,10 +103,6 @@ zcat $CWD/gtk.gtk-tut.diff.gz | patch -p1 --verbose || exit 1 libtoolize --force autoreconf -vif -# Autoconf changes linux to linux-gnu. -# Our host is $ARCH-slackware-linux not $ARCH-slackware-linux-gnu: -sed -i -e 's#linux|linux-gnu|#linux|linux|#' config.sub - CFLAGS="$SLKCFLAGS" \ ./configure \ --prefix=/usr \ @@ -116,12 +112,12 @@ CFLAGS="$SLKCFLAGS" \ --with-xinput=yes \ --enable-xkb \ --enable-introspection \ - --build=$ARCH-slackware-linux || exit 1 + --build=$ARCH-slackware-linux-gnu || exit 1 make $NUMJOBS || make || exit 1 # Check the host value that is passed to the compile to the one in this script: -host="$ARCH-slackware-linux" +host="$ARCH-slackware-linux-gnu" compile_host=$(grep 'host_triplet =' gtk/Makefile | sed -e "s/.* = //") if [ "x$compile_host" != "x$host" ]; then echo "Host mismatch: compile='$compile_host', SlackBuild='$host'" && exit 1 diff --git a/source/l/gtk4/gtk4.SlackBuild b/source/l/gtk4/gtk4.SlackBuild index 6f6101b1..5e39bfb2 100755 --- a/source/l/gtk4/gtk4.SlackBuild +++ b/source/l/gtk4/gtk4.SlackBuild @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright 2008, 2009, 2010, 2011, 2013, 2018, 2020, 2021 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2008, 2009, 2010, 2011, 2013, 2018, 2020, 2021, 2022 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gtk4 VERSION=${VERSION:-$(echo gtk-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -97,11 +97,11 @@ meson setup \ -Dman-pages=true \ -Ddemos=true \ -Dgtk_doc=false \ - -Dbroadway_backend=true \ - -Dexamples=false \ - -Dtests=false \ - -Dinstalled_tests=false \ - -Dwayland_backend=true \ + -Dbroadway-backend=true \ + -Dbuild-examples=false \ + -Dbuild-tests=false \ + -Dinstall-tests=false \ + -Dwayland-backend=true \ .. || exit 1 "${NINJA:=ninja}" $NUMJOBS || exit 1 DESTDIR=$PKG $NINJA install || exit 1 diff --git a/source/l/gvfs/gvfs.SlackBuild b/source/l/gvfs/gvfs.SlackBuild index 199ebdbf..50d06e59 100755 --- a/source/l/gvfs/gvfs.SlackBuild +++ b/source/l/gvfs/gvfs.SlackBuild @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=gvfs VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -75,6 +75,8 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ +zcat $CWD/gvfs.ftbfs.diff.gz | patch -p1 --verbose || exit 1 + # Configure, build, and install: export CFLAGS="$SLKCFLAGS" export CXXFLAGS="$SLKCFLAGS" diff --git a/source/l/gvfs/gvfs.ftbfs.diff b/source/l/gvfs/gvfs.ftbfs.diff new file mode 100644 index 00000000..7728d102 --- /dev/null +++ b/source/l/gvfs/gvfs.ftbfs.diff @@ -0,0 +1,10 @@ +--- ./daemon/meson.build.orig 2021-04-30 06:19:33.189706000 -0500 ++++ ./daemon/meson.build 2022-02-16 14:24:07.157150575 -0600 +@@ -366,7 +366,6 @@ + ) + + i18n.merge_file( +- policy, + input: policy_in, + output: '@BASENAME@', + po_dir: po_dir, diff --git a/source/l/jasper/jasper.SlackBuild b/source/l/jasper/jasper.SlackBuild index b42ca47f..01dafd13 100755 --- a/source/l/jasper/jasper.SlackBuild +++ b/source/l/jasper/jasper.SlackBuild @@ -1,7 +1,7 @@ #!/bin/bash # Copyright 2007, 2008 Eric Hameleers, Eijdhoven, NL -# Copyright 2009, 2010, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2009, 2010, 2018, 2022 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # Permission to use, copy, modify, and distribute this software for @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=jasper -SRCNAM=jasper-version +SRCNAM=jasper VERSION=${VERSION:-$(echo $SRCNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} BUILD=${BUILD:-1} @@ -100,10 +100,18 @@ cd - mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION cp -a \ - COPYRIGHT INSTALL LICENSE README* \ + COPYRIGHT* ChangeLog INSTALL* LICENSE* NEWS* README* \ $PKG/usr/doc/$PKGNAM-$VERSION find $PKG/usr/doc -type f -exec chmod 644 {} \+ +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \+ for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done diff --git a/source/l/json-glib/json-glib.SlackBuild b/source/l/json-glib/json-glib.SlackBuild index e0cbd9f7..4f9bcab1 100755 --- a/source/l/json-glib/json-glib.SlackBuild +++ b/source/l/json-glib/json-glib.SlackBuild @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=json-glib VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -102,7 +102,7 @@ meson setup \ --sysconfdir=/etc \ --localstatedir=/var \ --buildtype=release \ - -Ddocs=false \ + -Dgtk_doc=disabled \ .. || exit 1 "${NINJA:=ninja}" $NUMJOBS || exit 1 DESTDIR=$PKG $NINJA install || exit 1 diff --git a/source/l/libsecret/libsecret.SlackBuild b/source/l/libsecret/libsecret.SlackBuild index 0446a97e..b789aa88 100755 --- a/source/l/libsecret/libsecret.SlackBuild +++ b/source/l/libsecret/libsecret.SlackBuild @@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=libsecret VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-1} if [ -z "$ARCH" ]; then case "$( uname -m )" in @@ -76,24 +76,29 @@ find . \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \+ -CFLAGS="$SLKCFLAGS" \ -CXXFLAGS="$SLKCFLAGS" \ -./configure \ +# Configure, build, and install: +export CFLAGS="$SLKCFLAGS" +export CXXFLAGS="$SLKCFLAGS" +mkdir meson-build +cd meson-build +meson setup \ --prefix=/usr \ - --libdir=/usr/lib${LIBDIRSUFFIX} \ + --libdir=lib${LIBDIRSUFFIX} \ + --libexecdir=/usr/libexec \ + --bindir=/usr/bin \ + --sbindir=/usr/sbin \ + --includedir=/usr/include \ + --datadir=/usr/share \ + --mandir=/usr/man \ --sysconfdir=/etc \ --localstatedir=/var \ - --mandir=/usr/man \ - --enable-introspection \ - --disable-static \ - --docdir=/usr/doc/$PKGNAM-$VERSION \ - --build=$ARCH-slackware-linux || exit 1 - -make $NUMJOBS || make || exit 1 -make install DESTDIR=$PKG || exit 1 - -# Don't ship .la files: -rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.la + --buildtype=release \ + -Dintrospection=true \ + -Dgtk_doc=false \ + .. || exit 1 + "${NINJA:=ninja}" $NUMJOBS || exit 1 + DESTDIR=$PKG $NINJA install || exit 1 +cd .. find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true @@ -102,7 +107,7 @@ find $PKG/usr/man -type f -exec gzip -9 {} \+ mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION cp -a \ - AUTHORS COPYING* INSTALL NEWS README* \ + AUTHORS* COPYING* INSTALL* NEWS* README* \ $PKG/usr/doc/$PKGNAM-$VERSION # If there's a ChangeLog, installing at least part of the recent history diff --git a/source/l/qt5/patches/qt5-glibc-2.34.patch b/source/l/qt5/patches/qt5-glibc-2.34.patch new file mode 100644 index 00000000..097d0efe --- /dev/null +++ b/source/l/qt5/patches/qt5-glibc-2.34.patch @@ -0,0 +1,24 @@ +diff -aurN qt-everywhere-src-5.15.3_20210826_21ea9c12/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc qt-everywhere-src-5.15.3_20210826_21ea9c12-mod/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc +--- qt-everywhere-src-5.15.3_20210826_21ea9c12/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc 2021-08-29 05:12:01.000000000 +0200 ++++ qt-everywhere-src-5.15.3_20210826_21ea9c12-mod/qtwebengine/src/3rdparty/chromium/third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc 2021-09-25 12:52:13.032957704 +0200 +@@ -135,7 +135,7 @@ + #else + const size_t page_mask = sysconf(_SC_PAGESIZE) - 1; + #endif +- size_t stack_size = (std::max(SIGSTKSZ, 65536) + page_mask) & ~page_mask; ++ size_t stack_size = (std::max<size_t>(SIGSTKSZ, 65536) + page_mask) & ~page_mask; + #if defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER) || \ + defined(THREAD_SANITIZER) + // Account for sanitizer instrumentation requiring additional stack space. +diff -aurN qt-everywhere-src-5.15.3_20210826_21ea9c12/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc qt-everywhere-src-5.15.3_20210826_21ea9c12-mod/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc +--- qt-everywhere-src-5.15.3_20210826_21ea9c12/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc 2021-08-29 05:12:02.000000000 +0200 ++++ qt-everywhere-src-5.15.3_20210826_21ea9c12-mod/qtwebengine/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc 2021-09-25 12:53:59.282947757 +0200 +@@ -138,7 +138,7 @@ + // SIGSTKSZ may be too small to prevent the signal handlers from overrunning + // the alternative stack. Ensure that the size of the alternative stack is + // large enough. +- static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ); ++ static const unsigned kSigStackSize = std::max<size_t>(16384, SIGSTKSZ); + + // Only set an alternative stack if there isn't already one, or if the current + // one is too small. diff --git a/source/l/qt5/qt5.SlackBuild b/source/l/qt5/qt5.SlackBuild index d9b2b394..f1bd631e 100755 --- a/source/l/qt5/qt5.SlackBuild +++ b/source/l/qt5/qt5.SlackBuild @@ -31,7 +31,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=qt5 VERSION=$(ls qt-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev) -BUILD=${BUILD:-2} +BUILD=${BUILD:-3} PKGSRC=$(echo $VERSION | cut -d - -f 1) PKGVER=$(echo $VERSION | tr - _) @@ -148,6 +148,9 @@ cd qtwebengine zcat $CWD/patches/qtwebengine-everywhere-src-5.15.2-%231904652.patch.gz | patch -p1 --verbose || exit 1 cd - 1>/dev/null +# Fix for glibc-2.34+: +zcat $CWD/patches/qt5-glibc-2.34.patch.gz | patch -p1 --verbose || exit 1 + # Apply upstream patch to move the wayland socket polling to a separate event # thread. This greatly improves the behavior of Plasma Wayland sessions, fixing # (for example) stuttering that was occuring on multimedia applications. diff --git a/source/l/shared-mime-info/git_meson_buildfix.patch b/source/l/shared-mime-info/git_meson_buildfix.patch new file mode 100644 index 00000000..80fd4dc8 --- /dev/null +++ b/source/l/shared-mime-info/git_meson_buildfix.patch @@ -0,0 +1,87 @@ +From 5a406b06792e26a83c7346b3c2443c0bd8d4cdb2 Mon Sep 17 00:00:00 2001 +From: Eli Schwartz <eschwartz@archlinux.org> +Date: Mon, 8 Nov 2021 18:22:47 -0500 +Subject: [PATCH] migrate from custom itstool to builtin msgfmt for creating + translated XML + +gettext upstream has supported this for a very long time (since 0.19.7 +via commit b3c2a5a242c36fbbaa0c5b17f975d6c638598a23, released in 2015), +and itstool is (mostly) a legacy of the time before gettext had proper +support for these sorts of use cases. + +This is similar to the state of intltool, which is described at +https://wiki.gnome.org/MigratingFromIntltoolToGettext + +During the port from autotools to meson, the legacy use of itstool was +faithfully translated to meson in the only way possible: by jumping +through hoops to run ninja inside ninja in order to generate the .mo +files for itstool, because meson's i18n module used a flawed design and +there was no "real" target to create those files, only a .PHONY +run_target which other rules cannot depend on. + +Although meson 0.60.0 added support for real targets for the built .mo +files, this changed the rules for output filenames, breaking the script. + +But msgfmt does not care, and anyways comes with builtin meson functions +for convenient use with XML files. So let's take this opportunity to +drop legacy dependencies and use the modern, builtin tooling, which +fixes this bug as a side effect. + +Fixes #170 +Index: shared-mime-info-2.1/data/freedesktop_generate.sh +=================================================================== +--- shared-mime-info-2.1.orig/data/freedesktop_generate.sh ++++ /dev/null +@@ -1,12 +0,0 @@ +-#!/bin/sh -e +- +-src_root="$1" +-build_root="$2" +- +-ninja -C "${build_root}" shared-mime-info-gmo +- +-itstool \ +- --its "${src_root}/data/its/shared-mime-info.its" \ +- --join "${src_root}/data/freedesktop.org.xml.in" \ +- -o "${build_root}/data/freedesktop.org.xml" \ +- "${build_root}/po/"*".gmo" +Index: shared-mime-info-2.1/data/meson.build +=================================================================== +--- shared-mime-info-2.1.orig/data/meson.build ++++ shared-mime-info-2.1/data/meson.build +@@ -1,18 +1,12 @@ + + install_man('update-mime-database.1') + +-freedesktop_org_xml = custom_target('freedesktop.org.xml', +- input : files( +- 'freedesktop.org.xml.in', +- 'its/shared-mime-info.its', +- 'its/shared-mime-info.loc', +- ), ++freedesktop_org_xml = i18n.merge_file( ++ input: 'freedesktop.org.xml.in', + output: 'freedesktop.org.xml', +- command: [ +- find_program('freedesktop_generate.sh'), +- meson.source_root(), +- meson.build_root() +- ], ++ data_dirs: '.', ++ po_dir: '../po', ++ type: 'xml', + install: true, + install_dir: get_option('datadir') / 'mime' / 'packages', + ) +Index: shared-mime-info-2.1/meson.build +=================================================================== +--- shared-mime-info-2.1.orig/meson.build ++++ shared-mime-info-2.1/meson.build +@@ -20,7 +20,6 @@ config.set_quoted('VERSION', meson.proje + ############################################################################### + # Find tools + +-itstool = find_program('itstool') + xmllint = find_program('xmllint') + xmlto = find_program('xmlto') + diff --git a/source/l/shared-mime-info/shared-mime-info.SlackBuild b/source/l/shared-mime-info/shared-mime-info.SlackBuild index af0365ed..2bfb885c 100755 --- a/source/l/shared-mime-info/shared-mime-info.SlackBuild +++ b/source/l/shared-mime-info/shared-mime-info.SlackBuild @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=shared-mime-info VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-3} +BUILD=${BUILD:-4} NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "} @@ -79,6 +79,7 @@ find . \ -exec chmod 644 {} \+ zcat $CWD/shared-mime-info.skip_tests.diff.gz | patch -p1 --verbose || exit 1 +zcat $CWD/git_meson_buildfix.patch.gz | patch -p1 --verbose || exit 1 # Configure, build, and install: export CFLAGS="$SLKCFLAGS" |