openSUSE Commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
March 2023
- 2 participants
- 2681 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package vlc for openSUSE:Factory checked in at 2023-03-01 16:13:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/vlc (Old)
and /work/SRC/openSUSE:Factory/.vlc.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vlc"
Wed Mar 1 16:13:42 2023 rev:135 rq:1068191 version:3.0.18
Changes:
--------
--- /work/SRC/openSUSE:Factory/vlc/vlc.changes 2023-02-28 12:48:28.772417055 +0100
+++ /work/SRC/openSUSE:Factory/.vlc.new.31432/vlc.changes 2023-03-01 16:13:46.866515728 +0100
@@ -1,0 +2,5 @@
+Tue Feb 28 13:15:40 UTC 2023 - pgajdos(a)suse.com
+
+- xosd plugin was removed in 5adefde
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ vlc.spec ++++++
--- /var/tmp/diff_new_pack.yMD6Ki/_old 2023-03-01 16:13:48.418523754 +0100
+++ /var/tmp/diff_new_pack.yMD6Ki/_new 2023-03-01 16:13:48.434523837 +0100
@@ -1,7 +1,7 @@
#
# spec file for package vlc
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
# Copyright (c) 2012 Dominique Leuenberger, Amsterdam, The Netherlands
#
# All modifications and additions to the file contributed by third parties
@@ -117,7 +117,6 @@
BuildRequires: speex-devel >= 1.0.5
BuildRequires: update-desktop-files
BuildRequires: vcdimager-devel
-BuildRequires: xosd-devel
BuildRequires: (pkgconfig(libavcodec) >= 57.37.100 with pkgconfig(libavcodec) < 59)
BuildRequires: (pkgconfig(libavformat) >= 53.21.0 with pkgconfig(libavformat) < 59)
BuildRequires: (pkgconfig(libavutil) >= 52.4.0 with pkgconfig(libavutil) < 57)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libbobcat for openSUSE:Factory checked in at 2023-03-01 16:13:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libbobcat (Old)
and /work/SRC/openSUSE:Factory/.libbobcat.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libbobcat"
Wed Mar 1 16:13:41 2023 rev:3 rq:1068185 version:6.02.02
Changes:
--------
--- /work/SRC/openSUSE:Factory/libbobcat/libbobcat.changes 2023-02-02 18:27:06.966999030 +0100
+++ /work/SRC/openSUSE:Factory/.libbobcat.new.31432/libbobcat.changes 2023-03-01 16:13:46.098511757 +0100
@@ -1,0 +2,6 @@
+Tue Feb 28 11:22:22 UTC 2023 - pgajdos(a)suse.com
+
+- do not build documentation with yodl, it can be reached here:
+ https://fbb-git.gitlab.io/bobcat/manhtml/bobcat.7.html
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libbobcat.spec ++++++
--- /var/tmp/diff_new_pack.QCWx0Z/_old 2023-03-01 16:13:46.614514425 +0100
+++ /var/tmp/diff_new_pack.QCWx0Z/_new 2023-03-01 16:13:46.618514445 +0100
@@ -45,8 +45,6 @@
#BuildRequires: sendmail-devel
%if "%{name}" == "%{_lib_name}"
BuildRequires: icmake
-# BuildRequires for man:
-BuildRequires: yodl
%endif
BuildRequires: gcc-c++
@@ -106,24 +104,21 @@
sed -i 's/^#define DOC/\/\/ #define DOC/g' %{_name}/INSTALL.im
sed -i 's/^#define HDR/\/\/ #define HDR/g' %{_name}/INSTALL.im
sed -i 's/^#define LIB/\/\/ #define LIB/g' %{_name}/INSTALL.im
-sed -i 's/^#define MAN/\/\/ #define MAN/g' %{_name}/INSTALL.im
echo "/* created during rpmbuild */" >> %{_name}/INSTALL.im
echo "#define CXX \"${CXX}\"" >> %{_name}/INSTALL.im
echo "#define CXXFLAGS \"${CXXFLAGS}\"" >> %{_name}/INSTALL.im
echo "#define DOC \"%{_docdir}/%{_lib_name}%{_lib_version}-devel\"" >> %{_name}/INSTALL.im
echo "#define HDR \"%{_includedir}/%{_name}\"" >> %{_name}/INSTALL.im
echo "#define LIB \"%{_libdir}\"" >> %{_name}/INSTALL.im
-echo "#define MAN \"%{_mandir}\"" >> %{_name}/INSTALL.im
pushd %{_name}
./build dep
./build light
#echo -e "y\nn\ny\ny\n" | ./build libraries
-./build man
popd
%install
pushd %{_name}
-./build install x %{buildroot}
+./build install hl %{buildroot}
popd
%post -n %{_lib_name}%{_lib_version} -p /sbin/ldconfig
@@ -136,11 +131,7 @@
%files devel
%{_libdir}/%{_lib_name}.so
-%doc %{_docdir}/%{_lib_name}%{_lib_version}-devel/
%{_includedir}/%{_name}/
-%{_mandir}/man3/*.3%{_name}.gz
-%{_mandir}/man7/*.7%{_name}.gz
-%{_mandir}/man7/%{_name}.7.gz
%files devel-static
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package dd_rescue for openSUSE:Factory checked in at 2023-03-01 16:13:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dd_rescue (Old)
and /work/SRC/openSUSE:Factory/.dd_rescue.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dd_rescue"
Wed Mar 1 16:13:40 2023 rev:57 rq:1068136 version:1.99.13
Changes:
--------
--- /work/SRC/openSUSE:Factory/dd_rescue/dd_rescue.changes 2023-02-11 22:20:14.188091721 +0100
+++ /work/SRC/openSUSE:Factory/.dd_rescue.new.31432/dd_rescue.changes 2023-03-01 16:13:44.986506006 +0100
@@ -1,0 +2,20 @@
+Tue Feb 28 09:44:46 UTC 2023 - Dirk M��ller <dmueller(a)suse.com>
+
+- temporarily remove not-really-detached-signature
+
+-------------------------------------------------------------------
+Fri Feb 24 09:37:35 CET 2023 - kurt(a)garloff.de
+
+- Update to 1.99.13:
+ * Drop fuzz-lzo-* patches, as they have been merged upstream.
+ * Allow overriding strip binary (not used in this build).
+ * Make -fanalyzer more happy: abort() and assert()ions to ensure
+ we always react to failed memory allocations.
+ * ddr_hash: Support reading/writing checksums from stdin/out "-".
+ * Fix aliasing issue with XORN function (in aes.h), spotted by
+ gcc-13: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108695
+ Drop workaround from Martin Li��ka again.
+ * Higher optimization level for aes.c driver is beneficial for
+ key setup speed.
+
+-------------------------------------------------------------------
Old:
----
dd_rescue-1.99.12.tar.bz2
dd_rescue-1.99.12.tar.bz2.asc
New:
----
dd_rescue-1.99.13.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dd_rescue.spec ++++++
--- /var/tmp/diff_new_pack.xbLQQF/_old 2023-03-01 16:13:45.538508860 +0100
+++ /var/tmp/diff_new_pack.xbLQQF/_new 2023-03-01 16:13:45.542508880 +0100
@@ -21,14 +21,14 @@
%define _lto_cflags %{nil}
%endif
Name: dd_rescue
-Version: 1.99.12
+Version: 1.99.13
Release: 0
Summary: Data copying in the presence of I/O Errors
License: GPL-2.0-only OR GPL-3.0-only
Group: System/Base
URL: http://www.garloff.de/kurt/linux/ddrescue/
Source0: http://garloff.de/kurt/linux/ddrescue/%{name}-%{version}.tar.bz2
-Source1: http://garloff.de/kurt/linux/ddrescue/%{name}-%{version}.tar.bz2.asc
+# Source1: http://garloff.de/kurt/linux/ddrescue/%{name}-%{version}.tar.bz2.asc
Source2: %{name}.keyring
Source99: %{name}.changes
# PATCH-FIX-UPSTREAM no-python2.patch sf#ddrescue#4 mcepl(a)suse.com
@@ -127,10 +127,7 @@
# avoid running dependency generation step
touch .dep
-# GCC 13 newly detects a violation of the strict aliasing rule:
-# https://sourceforge.net/p/ddrescue/tickets/6/
-OPT_FLAGS="%{optflags} -fno-strict-aliasing"
-%make_build RPM_OPT_FLAGS="$OPT_FLAGS" LIBDIR=%{_libdir} LIB=%{_lib}
+%make_build RPM_OPT_FLAGS="%{optflags}" LIBDIR=%{_libdir} LIB=%{_lib}
%install
%make_install RPM_OPT_FLAGS="%{optflags}" INSTALLDIR=%{buildroot}/%{_bindir} LIB=%{_lib} LIBDIR=%{_libdir} \
++++++ dd_rescue-1.99.12.tar.bz2 -> dd_rescue-1.99.13.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/Makefile new/dd_rescue-1.99.13/Makefile
--- old/dd_rescue-1.99.12/Makefile 2022-07-26 15:31:58.000000000 +0200
+++ new/dd_rescue-1.99.13/Makefile 2023-02-24 09:28:08.000000000 +0100
@@ -2,7 +2,7 @@
# (c) garloff(a)suse.de, 99/10/09, GNU GPL
# (c) kurt(a)garloff.de, 2010 -- 2021, GNU GPL v2 or v3
-VERSION = 1.99.12
+VERSION = 1.99.13
DESTDIR =
SRCDIR ?= .
@@ -46,6 +46,7 @@
LDPIE = -pie
RDYNAMIC = -rdynamic
MAKE := $(MAKE) -f $(SRCDIR)/Makefile
+STRIP ?= strip
LZOP = $(shell type -p lzop || type -P true)
HAVE_SHA256SUM = $(shell type -p sha256sum >/dev/null && echo 1 || echo 0)
@@ -270,6 +271,9 @@
aes_c.po: $(SRCDIR)/aes_c.c
$(CC) $(CFLAGS_OPT) $(PIC) -o $@ -c $<
+aes.po: $(SRCDIR)/aes.c
+ $(CC) $(CFLAGS) -O2 $(PIC) -o $@ -c $<
+
# Default rules
%.o: $(SRCDIR)/%.c config.h
$(CC) $(CFLAGS) $(DEFINES) $(PIE) -c $<
@@ -401,10 +405,10 @@
# Special pseudo targets
strip: $(TARGETS) $(LIBTARGETS)
- strip -S $^
+ $(STRIP) -S $^
strip-all: $(OTHTARGETS)
- strip -S $^
+ $(STRIP) -S $^
clean:
rm -f $(TARGETS) $(OTHTARGETS) $(OBJECTS) $(OBJECTS2) core test log *.o *.po *.cmp *.enc *.enc.old CHECKSUMS.* SALTS.* KEYS.* IVS.* .dep
@@ -457,6 +461,9 @@
aes_c.o: $(SRCDIR)/aes_c.c
$(CC) $(CFLAGS) $(PIE) $(FULL_UNROLL) -O3 -c $<
+aes.o: $(SRCDIR)/aes.c
+ $(CC) $(CFLAGS) $(PIE) -O2 -c $<
+
aes_ossl.o: $(SRCDIR)/aes_ossl.c $(SRCDIR)/aes_ossl10.c $(SRCDIR)/aes_ossl11.c
$(CC) $(CFLAGS) $(PIE) -O3 -c $<
@@ -625,6 +632,7 @@
$(VG) ./sha256 /dev/null | sha256sum -c
$(VG) ./sha384 /dev/null | sha384sum -c
$(VG) ./sha512 /dev/null | sha512sum -c
+ $(VG) ./dd_rescue -q -c0 -a -b16k -t -L ./libddr_hash.so=sha256:outnm=- TEST2 /dev/null | $(VG) ./dd_rescue -c0 -a -b16k -t -L ./libddr_hash.so=sha256:chknm=- TEST2 /dev/null
rm -f HASH.TEST CHECKSUMS.sha256 CHECKSUMS.sha512 TEST2
check_lzo: $(TARGETS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/Makefile.android.arm32abi28 new/dd_rescue-1.99.13/Makefile.android.arm32abi28
--- old/dd_rescue-1.99.12/Makefile.android.arm32abi28 2022-07-26 16:13:05.000000000 +0200
+++ new/dd_rescue-1.99.13/Makefile.android.arm32abi28 2023-02-23 22:51:27.000000000 +0100
@@ -53,7 +53,7 @@
move: all
# Well, we can strip foreign binaries, luckily
strip -S $(TGT) $(TGT_EXTRA)
- mkdir -p android.arm64
- mv $(TGT) android.arm64/
- mv $(TGT_EXTRA) android.arm64/
+ mkdir -p android.arm32abi28
+ mv $(TGT) android.arm32abi28/
+ mv $(TGT_EXTRA) android.arm32abi28/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/Makefile.android.arm64abi28 new/dd_rescue-1.99.13/Makefile.android.arm64abi28
--- old/dd_rescue-1.99.12/Makefile.android.arm64abi28 2022-07-26 15:57:32.000000000 +0200
+++ new/dd_rescue-1.99.13/Makefile.android.arm64abi28 2023-02-23 22:51:27.000000000 +0100
@@ -53,7 +53,7 @@
move: all
# Well, we can strip foreign binaries, luckily
strip -S $(TGT) $(TGT_EXTRA)
- mkdir -p android.arm64
- mv $(TGT) android.arm64/
- mv $(TGT_EXTRA) android.arm64/
+ mkdir -p android.arm64abi28
+ mv $(TGT) android.arm64abi28/
+ mv $(TGT_EXTRA) android.arm64abi28/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/REL-ID new/dd_rescue-1.99.13/REL-ID
--- old/dd_rescue-1.99.12/REL-ID 2022-07-26 18:17:09.000000000 +0200
+++ new/dd_rescue-1.99.13/REL-ID 2023-02-24 09:34:09.000000000 +0100
@@ -1 +1 @@
-DD_RESCUE_1_99_12
+DD_RESCUE_1_99_13
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/aes.h new/dd_rescue-1.99.13/aes.h
--- old/dd_rescue-1.99.12/aes.h 2021-04-28 10:02:23.000000000 +0200
+++ new/dd_rescue-1.99.13/aes.h 2023-02-24 08:57:15.000000000 +0100
@@ -30,7 +30,7 @@
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
-
+//typedef unsigned long ulong_alias __attribute__((may_alias));
#define STP_ECB 0
#define STP_CBC 1
@@ -82,8 +82,8 @@
#define XORN(in1,in2,out,len) \
do { \
uint _i; \
- for (_i = 0; _i < len/sizeof(ulong); ++_i) \
- *((ulong*)(out)+_i) = *((ulong*)(in1)+_i) ^ *((ulong*)(in2)+_i); \
+ for (_i = 0; _i < len/sizeof(uint); ++_i) \
+ *((uint*)(out)+_i) = *((const uint*)(in1)+_i) ^ *((const uint*)(in2)+_i); \
} while(0)
/* Generic functions */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/checksum_file.c new/dd_rescue-1.99.13/checksum_file.c
--- old/dd_rescue-1.99.12/checksum_file.c 2021-04-14 10:23:02.000000000 +0200
+++ new/dd_rescue-1.99.13/checksum_file.c 2023-02-23 22:51:27.000000000 +0100
@@ -60,6 +60,7 @@
{
char *lnbf = NULL;
size_t lln = 0;
+ //size_t read = 0;
char* bnm = basename((char*)nm);
while (!feof_unlocked(f)) {
char *fnm, *fwh;
@@ -67,6 +68,13 @@
ssize_t n = getline(&lnbf, &lln, f);
if (n <= 0)
break;
+ /* For non-seekable files, track position to avoid returning pos == -1 */
+ /*
+ if (pos < 0) {
+ pos = read;
+ read += n;
+ }
+ */
fwh = strchr(lnbf, ' ');
if (!fwh)
continue;
@@ -101,9 +109,12 @@
{
if (!fnm)
return NULL;
- if (!strcmp("-", fnm))
- return stdin;
- else {
+ if (!strcmp("-", fnm)) {
+ if (!strcmp(mode, "w"))
+ return stdout;
+ else
+ return stdin;
+ } else {
if (acc) {
int fd;
if (strcmp(mode, "w"))
@@ -118,23 +129,33 @@
/* get chksum */
int get_chks(const char* cnm, const char* nm, char* chks, int wantedln)
{
- FILE *f = fopen_chks(cnm, "r", 0);
+ FILE *f;
+ char is_stdin = 0;
+ if (strcmp(cnm, "-"))
+ f = fopen_chks(cnm, "r", 0);
+ else {
+ f = stdin;
+ is_stdin = 1;
+ }
if (!f)
return -1;
off_t err = find_chks(f, nm, chks, wantedln);
- if (f != stdin)
+ if (!is_stdin)
fclose(f);
- return err < 0? err: 0;
+ //return err < 0? err: 0;
+ return err == -ENOENT? err: 0;
}
/* update chksum */
int upd_chks(const char* cnm, const char *nm, const char *chks, int acc)
{
errno = 0;
- FILE *f = fopen_chks(cnm, "r+", 0);
+ FILE *f = NULL;
int err = 0;
char oldchks[MAXHASHSLN+2];
char* bnm = basename(nm);
+ if (strcmp(cnm, "-"))
+ f = fopen_chks(cnm, "r+", 0);
if (!f) {
errno = 0;
f = fopen_chks(cnm, "w", acc);
@@ -159,7 +180,8 @@
}
}
}
- fclose(f);
+ if (f != stdout)
+ fclose(f);
return err;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/dd_rescue.c new/dd_rescue-1.99.13/dd_rescue.c
--- old/dd_rescue-1.99.12/dd_rescue.c 2022-01-09 18:27:45.000000000 +0100
+++ new/dd_rescue-1.99.13/dd_rescue.c 2023-02-23 22:51:27.000000000 +0100
@@ -1309,11 +1309,13 @@
}
int offs;
unsigned char* extrabuf = (unsigned char*)malloc(4096);
+ assert(extrabuf);
int ebufall = 4096;
for (offs = 0; offs < aln; offs += 1+strlen(attrs+offs)) {
ssize_t itln = getxattr(inm, attrs+offs, NULL, 0);
if (ebufall && itln > ebufall) {
extrabuf = (unsigned char*)realloc(extrabuf, itln);
+ assert(extrabuf);
ebufall = itln;
}
itln = getxattr(inm, attrs+offs, extrabuf, itln);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/ffs.h new/dd_rescue-1.99.13/ffs.h
--- old/dd_rescue-1.99.12/ffs.h 2021-04-14 10:23:02.000000000 +0200
+++ new/dd_rescue-1.99.13/ffs.h 2023-02-23 22:51:27.000000000 +0100
@@ -116,9 +116,9 @@
res -= 32;
vhi = vlo;
}
-#else
+#else /* 32bit*/
unsigned int vhi = val;
-#endif
+#endif /* __WORDSIZE */
unsigned int mask = 0xffff0000;
unsigned int shift = 16;
while (shift > 0) {
@@ -130,12 +130,14 @@
mask <<= shift;
}
return res;
-#endif
+#endif /* ARM */
}
+#endif /* __BIG_ENDIAN */
+
+#if defined(__i386__) || defined(__x86_64__)
int myffs_sse42(unsigned long);
int myffsl_sse42(unsigned long);
-#endif
-
void probe_sse42();
+#endif
#endif /* _FFS_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/fiemap.c new/dd_rescue-1.99.13/fiemap.c
--- old/dd_rescue-1.99.12/fiemap.c 2015-04-15 10:56:38.000000000 +0200
+++ new/dd_rescue-1.99.13/fiemap.c 2023-02-23 22:51:27.000000000 +0100
@@ -372,7 +372,9 @@
++errs;
continue;
}
+ assert(ext);
char* dnm = devname(st.st_dev);
+ assert(dnm);
if (*dnm) {
fd2 = open/*64*/(dnm, O_RDONLY);
if (fd2 < 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/frandom.c new/dd_rescue-1.99.13/frandom.c
--- old/dd_rescue-1.99.12/frandom.c 2021-04-14 10:23:02.000000000 +0200
+++ new/dd_rescue-1.99.13/frandom.c 2023-02-23 22:51:27.000000000 +0100
@@ -18,6 +18,7 @@
#include <string.h>
#include <asm/errno.h>
#include <unistd.h>
+//#include <assert.h>
#ifdef HAVE_CONFIG_H
# include "config.h"
@@ -119,8 +120,10 @@
struct frandom_state *state;
state = (struct frandom_state *)malloc(sizeof(struct frandom_state));
+ //assert(state);
if (!state)
- return NULL;
+ abort();
+ //return NULL;
init_rand_state(state, seedbf);
if (!int_random_state)
@@ -193,6 +196,7 @@
state = int_random_state;
if (!state)
state = (struct frandom_state *)frandom_init_lrand(0);
+ //assert(state);
i = state->i;
j = state->j;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/fuzz_lzo.c new/dd_rescue-1.99.13/fuzz_lzo.c
--- old/dd_rescue-1.99.12/fuzz_lzo.c 2022-07-26 15:54:56.000000000 +0200
+++ new/dd_rescue-1.99.13/fuzz_lzo.c 2023-02-23 22:51:27.000000000 +0100
@@ -23,6 +23,8 @@
#include <stdint.h>
#include <unistd.h>
#include <fcntl.h>
+#include <sys/stat.h>
+#include <utime.h>
#include <string.h>
#include <netinet/in.h>
//#include <sys/mman.h>
@@ -39,6 +41,7 @@
fprintf(stderr, "Options:\n");
fprintf(stderr, " -h\t\tThis help\n");
fprintf(stderr, " -d\t\tEnable debug mode\n");
+ fprintf(stderr, " -p\t\tCopy ownership, permissions, timestamps\n");
fprintf(stderr, " -b BLKSZ\tBlocksize while compressing\n");
fprintf(stderr, " -v/V XXX\tSet version/version to extract to hex XXX\n");
fprintf(stderr, " -m/l YYY\tSet method/level to YYY\n");
@@ -49,11 +52,14 @@
fprintf(stderr, " -x BLK:OFF=VAL\tSet byte at offset OFF in block BLK to VAL\n");
fprintf(stderr, " -U BLK\tBreaks the uncompressed cksum for block BLK\n");
fprintf(stderr, " -C BLK\tBreaks the compressed cksum for block BLK\n");
+ fprintf(stderr, " When tweaks u/c/x happen to do no change, they invert the result\n");
exit(1);
}
int errors = 0;
+int applied = 0;
char debug = 0;
+char copystamp = 0;
enum disttype { NONE = 0, ULEN, CLEN, BYTE, UCKS, CCKS };
@@ -182,25 +188,34 @@
abort();
}
-blk_dist_t* find_dist(LISTTYPE(blk_dist_t)* dlist, int blkno, enum disttype type, signed char fix)
+LISTTYPE(blk_dist_t)* filter_dist(LISTTYPE(blk_dist_t)* dlist, int blkno, enum disttype type, signed char fix)
{
+ LISTTYPE(blk_dist_t) *dist_matches = NULL;
LISTTYPE(blk_dist_t) *dist;
LISTFOREACH(dlist, dist) {
blk_dist_t *dst = &LISTDATA(dist);
if ((unsigned)blkno == dst->blkno && type == dst->dist &&
(fix == -1 || fix == dst->fixup))
- return dst;
+ LISTAPPEND(dist_matches, *dst, blk_dist_t);
}
- return NULL;
+ return dist_matches;
}
#define APPLY_DIST(TP, FIX, VAR, APPL) \
- dist = find_dist(dists, blk, TP, FIX); \
- if (dist) { \
+ match_dists = filter_dist(dists, blk, TP, FIX); \
+ LISTFOREACH(match_dists, dt) { \
+ /*blk_dist_t **/dist = &LISTDATA(dt); \
fprintf(stderr, "Blk %i: " #VAR "(%x) " #APPL " %x\n", \
- blk, dist->offset, dist->val); \
+ blk, dist->offset, dist->val); \
+ uint32_t old = VAR; \
VAR APPL dist->val; \
- }
+ ++applied; \
+ if (VAR == old) { \
+ fprintf(stderr, " new value == old value %08x, inverting\n", old); \
+ VAR ^= 0xffffffffUL; \
+ } \
+ } \
+ LISTTREEDEL(match_dists, blk_dist_t)
@@ -232,6 +247,7 @@
cln = rd;
}
blk_dist_t *dist;
+ LISTTYPE(blk_dist_t) *match_dists, *dt;
/* Change bytes with fixing cmpr cksum */
APPLY_DIST(BYTE, 1, cbuf[dist->offset], =);
uint32_t cadl = lzo_adler32(ADLER32_INIT_VALUE, cbuf, cln);
@@ -244,6 +260,7 @@
APPLY_DIST(CLEN, -1, clen, =);
/* Change ucksum+ccksum */
APPLY_DIST(UCKS, -1, uadl, ^=);
+ dist = NULL;
APPLY_DIST(CCKS, -1, cadl, ^=);
if (dist && cln == (unsigned)rd) {
fprintf(stderr, "Blk %i: Tweaking compressed cksum not applied as block not compressed\n", blk);
@@ -298,6 +315,37 @@
}
+/** Copy ownership and permissions */
+int copyperm(int ifd, int ofd)
+{
+ int err;
+ mode_t fmode;
+ struct stat stbuf;
+ err = fstat(ifd, &stbuf);
+ if (err)
+ return err;
+ fmode = stbuf.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
+ err = fchown(ofd, stbuf.st_uid, stbuf.st_gid);
+ if (err)
+ fmode &= ~(S_ISUID | S_ISGID);
+ err += fchmod(ofd, fmode);
+ return err;
+}
+
+/** File time copy */
+int copytimes(const char* inm, const char* onm)
+{
+ int err;
+ struct stat stbuf;
+ struct utimbuf utbuf;
+ err = stat(inm, &stbuf);
+ if (err)
+ return err;
+ utbuf.actime = stbuf.st_atime;
+ utbuf.modtime = stbuf.st_mtime;
+ err = utime(onm, &utbuf);
+ return err;
+}
/* TODO: MULTIPART and sparse ... */
int main(int argc, char* argv[])
{
@@ -311,7 +359,7 @@
char levl = 5;
unsigned int flags = 0x03000003UL; /* UNIX | ADLER32_C | ADLER32_D */
int c;
- while ((c = getopt(argc, argv, "hdb:v:V:m:l:n:f:u:c:x:U:C:!")) != -1) {
+ while ((c = getopt(argc, argv, "hdpb:v:V:m:l:n:f:u:c:x:U:C:!")) != -1) {
switch (c) {
case 'h':
usage();
@@ -322,6 +370,9 @@
case 'd':
debug = 1;
break;
+ case 'p':
+ copystamp = 1;
+ break;
case 'b':
blksize = atoi(optarg);
break;
@@ -404,12 +455,23 @@
write_header(ofd, hname, hversion, extrvers, meth, levl, flags, hdr_fixup);
compress(ifd, ofd, blksize, blk_dists);
+ if (copystamp)
+ copyperm(ifd, ofd);
+
close(ofd);
close(ifd);
+ if (copystamp)
+ copytimes(iname, oname);
+
if (debug)
dump_blkdists(blk_dists);
+ if (applied != LISTSIZE(blk_dists, blk_dist_t)) {
+ ++errors;
+ fprintf(stderr, "WARNING: Applied %i of %i tweaks\n",
+ applied, LISTSIZE(blk_dists, blk_dist_t));
+ }
LISTTREEDEL(blk_dists, blk_dist_t);
return errors;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/libddr_hash.c new/dd_rescue-1.99.13/libddr_hash.c
--- old/dd_rescue-1.99.12/libddr_hash.c 2021-04-14 10:23:02.000000000 +0200
+++ new/dd_rescue-1.99.13/libddr_hash.c 2023-02-23 22:51:27.000000000 +0100
@@ -214,6 +214,7 @@
state->alg = get_hashalg(state, param+10);
else if (!memcmp(param, "hmacpwd=", 8)) {
state->hmacpwd = (unsigned char*)malloc(MAX_HMACPWDLN);
+ assert(state->hmacpwd);
state->hmacpln = strlen(param+8);
if (state->hmacpln >= MAX_HMACPWDLN)
state->hmacpln = MAX_HMACPWDLN-1;
@@ -223,6 +224,7 @@
else if (!memcmp(param, "hmacpwdfd=", 10)) {
int hfd = atol(param+10);
state->hmacpwd = (unsigned char*)malloc(MAX_HMACPWDLN);
+ assert(state->hmacpwd);
state->hmacpwd[MAX_HMACPWDLN-1] = 0;
if (hfd == 0 && isatty(hfd)) {
FPLOG(INPUT, "%s", "Enter HMAC password: ");
@@ -243,6 +245,7 @@
continue;
}
state->hmacpwd = (unsigned char*)malloc(MAX_HMACPWDLN);
+ assert(state->hmacpwd);
state->hmacpwd[MAX_HMACPWDLN-1] = 0;
state->hmacpln = fread(state->hmacpwd, 1, MAX_HMACPWDLN-1, f);
if (state->hmacpln <= 0) {
@@ -273,6 +276,7 @@
#ifdef HAVE_XATTR
if ((state->chk_xattr || state->set_xattr) && !state->xattr_name) {
state->xattr_name = (char*)malloc(32);
+ assert(state->xattr_name);
state->xnmalloc = 1;
if (state->hmacpwd)
snprintf(state->xattr_name, 32, "user.hmac.%s", state->alg->name);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/rdrand.c new/dd_rescue-1.99.13/rdrand.c
--- old/dd_rescue-1.99.12/rdrand.c 2022-07-25 17:45:07.000000000 +0200
+++ new/dd_rescue-1.99.13/rdrand.c 2023-02-23 22:51:27.000000000 +0100
@@ -47,7 +47,7 @@
volatile unsigned int _rdrand_res;
void probe_rdrand()
{
- unsigned int val;
+ unsigned int val = 0;
_rdrand32_step(&val);
_rdrand_res = val;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/secmem.c new/dd_rescue-1.99.13/secmem.c
--- old/dd_rescue-1.99.12/secmem.c 2022-01-09 18:27:45.000000000 +0100
+++ new/dd_rescue-1.99.13/secmem.c 2023-02-23 22:51:27.000000000 +0100
@@ -85,6 +85,7 @@
sec_fields *sf = (sec_fields*)ptr;
sf->canary = 0xbeefdead;
//fprintf(stderr, "secmem_init: Length=%zi\n", offsetof(sec_fields, canary));
+ /* -fanalzyer considers this a mem leak, although we are supposed to return malloced mem */
return (sec_fields*)ptr;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/sha256.c new/dd_rescue-1.99.13/sha256.c
--- old/dd_rescue-1.99.12/sha256.c 2022-07-25 17:45:07.000000000 +0200
+++ new/dd_rescue-1.99.13/sha256.c 2023-02-23 22:51:27.000000000 +0100
@@ -89,40 +89,43 @@
*/
void sha256_64(const uint8_t* msg, hash_t* ctx)
{
- int i;
/* for each chunk create a 64-entry message schedule array w[0..63] of 32-bit words */
uint32_t w[64];
+#ifdef __ANALYZER__
+ /* -fanalyzer is not clever enough to see that initializing the first 16 ints is enough */
+ memset(w, 0, sizeof(w));
+#endif
/* copy chunk into first 16 words w[0..15] of the message schedule array */
#if 0
memcpy(w, msg, 64);
#else
#if defined(HAVE_UNALIGNED_HANDLING)
- for (i = 0; i < 16; ++i)
+ for (int i = 0; i < 16; ++i)
w[i] = htonl(*(uint32_t*)(msg+4*i));
#else
- for (i = 0; i < 16; ++i)
+ for (int i = 0; i < 16; ++i)
w[i] = to_int32_be(msg+4*i);
#endif
#endif
/* Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array: */
- for (i = 16; i < 64; ++i) {
- uint32_t s0 = RIGHTROTATE(w[i-15], 7) ^ RIGHTROTATE(w[i-15], 18) ^ (w[i-15] >> 3);
- uint32_t s1 = RIGHTROTATE(w[i-2], 17) ^ RIGHTROTATE(w[i-2] , 19) ^ (w[i-2] >> 10);
+ for (int i = 16; i < 64; ++i) {
+ const uint32_t s0 = RIGHTROTATE(w[i-15], 7) ^ RIGHTROTATE(w[i-15], 18) ^ (w[i-15] >> 3);
+ const uint32_t s1 = RIGHTROTATE(w[i-2], 17) ^ RIGHTROTATE(w[i-2] , 19) ^ (w[i-2] >> 10);
w[i] = w[i-16] + s0 + w[i-7] + s1;
}
/* Initialize working variables to current hash value:*/
uint32_t a = ctx->sha256_h[0], b = ctx->sha256_h[1], c = ctx->sha256_h[2], d = ctx->sha256_h[3];
uint32_t e = ctx->sha256_h[4], f = ctx->sha256_h[5], g = ctx->sha256_h[6], h = ctx->sha256_h[7];
/* Compression function main loop: */
- for (i = 0; i < 64; ++i) {
- uint32_t S1 = RIGHTROTATE(e, 6) ^ RIGHTROTATE(e, 11) ^ RIGHTROTATE(e, 25);
- //uint32_t ch = (e & f) ^ ((~e) & g);
- uint32_t ch = g ^ (e & (f ^ g));
- uint32_t temp1 = h + S1 + ch + k[i] + w[i];
- uint32_t S0 = RIGHTROTATE(a, 2) ^ RIGHTROTATE(a, 13) ^ RIGHTROTATE(a, 22);
- //uint32_t maj = (a & b) ^ (a & c) ^ (b & c);
- uint32_t maj = (a & b) | (c & (a | b));
- uint32_t temp2 = S0 + maj;
+ for (int i = 0; i < 64; ++i) {
+ const uint32_t S1 = RIGHTROTATE(e, 6) ^ RIGHTROTATE(e, 11) ^ RIGHTROTATE(e, 25);
+ //const uint32_t ch = (e & f) ^ ((~e) & g);
+ const uint32_t ch = g ^ (e & (f ^ g));
+ const uint32_t temp1 = h + S1 + ch + k[i] + w[i];
+ const uint32_t S0 = RIGHTROTATE(a, 2) ^ RIGHTROTATE(a, 13) ^ RIGHTROTATE(a, 22);
+ //const uint32_t maj = (a & b) ^ (a & c) ^ (b & c);
+ const uint32_t maj = (a & b) | (c & (a | b));
+ const uint32_t temp2 = S0 + maj;
h = g; g = f; f = e;
e = d + temp1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/sha512.c new/dd_rescue-1.99.13/sha512.c
--- old/dd_rescue-1.99.12/sha512.c 2022-07-25 17:45:07.000000000 +0200
+++ new/dd_rescue-1.99.13/sha512.c 2023-02-23 22:51:27.000000000 +0100
@@ -119,40 +119,43 @@
*/
void sha512_128(const uint8_t* msg, hash_t* ctx)
{
- int i;
/* for each chunk create a 80-entry message schedule array w[0..79] of 64-bit words */
uint64_t w[80];
+#ifdef __ANALYZER__
+ /* -fanalyzer is not clever enough to see that initializing the first 16 ints is enough */
+ memset(w, 0, sizeof(w));
+#endif
/* copy chunk into first 16 words w[0..15] of the message schedule array */
#if 0
memcpy(w, msg, 64);
#else
#if defined(HAVE_UNALIGNED_HANDLING)
- for (i = 0; i < 16; ++i)
+ for (int i = 0; i < 16; ++i)
w[i] = htonll(*(uint64_t*)(msg+8*i));
#else
- for (i = 0; i < 16; ++i)
+ for (int i = 0; i < 16; ++i)
w[i] = to_int64_be(msg+8*i);
#endif
#endif
/* Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array: */
- for (i = 16; i < 80; ++i) {
- uint64_t s0 = RIGHTROTATE(w[i-15], 1) ^ RIGHTROTATE(w[i-15], 8) ^ (w[i-15] >> 7);
- uint64_t s1 = RIGHTROTATE(w[i-2], 19) ^ RIGHTROTATE(w[i-2] ,61) ^ (w[i-2] >> 6);
+ for (int i = 16; i < 80; ++i) {
+ const uint64_t s0 = RIGHTROTATE(w[i-15], 1) ^ RIGHTROTATE(w[i-15], 8) ^ (w[i-15] >> 7);
+ const uint64_t s1 = RIGHTROTATE(w[i-2], 19) ^ RIGHTROTATE(w[i-2] ,61) ^ (w[i-2] >> 6);
w[i] = w[i-16] + s0 + w[i-7] + s1;
}
/* Initialize working variables to current hash value:*/
uint64_t a = ctx->sha512_h[0], b = ctx->sha512_h[1], c = ctx->sha512_h[2], d = ctx->sha512_h[3];
uint64_t e = ctx->sha512_h[4], f = ctx->sha512_h[5], g = ctx->sha512_h[6], h = ctx->sha512_h[7];
/* Compression function main loop: */
- for (i = 0; i < 80; ++i) {
- uint64_t S1 = RIGHTROTATE(e, 14) ^ RIGHTROTATE(e, 18) ^ RIGHTROTATE(e, 41);
- //uint64_t ch = (e & f) ^ ((~e) & g);
- uint64_t ch = g ^ (e & (f ^ g));
- uint64_t temp1 = h + S1 + ch + k[i] + w[i];
- uint64_t S0 = RIGHTROTATE(a, 28) ^ RIGHTROTATE(a, 34) ^ RIGHTROTATE(a, 39);
- //uint64_t maj = (a & b) ^ (a & c) ^ (b & c);
- uint64_t maj = (a & b) | (c & (a | b));
- uint64_t temp2 = S0 + maj;
+ for (int i = 0; i < 80; ++i) {
+ const uint64_t S1 = RIGHTROTATE(e, 14) ^ RIGHTROTATE(e, 18) ^ RIGHTROTATE(e, 41);
+ //const uint64_t ch = (e & f) ^ ((~e) & g);
+ const uint64_t ch = g ^ (e & (f ^ g));
+ const uint64_t temp1 = h + S1 + ch + k[i] + w[i];
+ const uint64_t S0 = RIGHTROTATE(a, 28) ^ RIGHTROTATE(a, 34) ^ RIGHTROTATE(a, 39);
+ //const uint64_t maj = (a & b) ^ (a & c) ^ (b & c);
+ const uint64_t maj = (a & b) | (c & (a | b));
+ const uint64_t temp2 = S0 + maj;
h = g; g = f; f = e;
e = d + temp1;
@@ -204,8 +207,7 @@
unsigned char* sha5xx_beout(unsigned char *buf, const hash_t *ctx, int wd)
{
assert(buf);
- int i;
- for (i = 0; i < wd; ++i)
+ for (int i = 0; i < wd; ++i)
*((uint64_t*)buf+i) = htonll(ctx->sha512_h[i]);
return buf;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dd_rescue-1.99.12/test_lzo_fuzz.sh new/dd_rescue-1.99.13/test_lzo_fuzz.sh
--- old/dd_rescue-1.99.12/test_lzo_fuzz.sh 2021-05-01 11:39:55.000000000 +0200
+++ new/dd_rescue-1.99.13/test_lzo_fuzz.sh 2023-02-23 22:51:27.000000000 +0100
@@ -43,8 +43,8 @@
test_fuzz 1 1 "" 16384 -U2
test_fuzz 1 1 "=nodiscard" 0 -U2
test_fuzz 1 1 "=nodiscard" 0 -C2
-test_fuzz 1 5 "" 16384 -x1:0x6fe=0x1a
-test_fuzz 1 6 "=nodiscard" 16384 -x1:0x6fe=0x1a
+test_fuzz 1 5 "" 16384 -x1:0x2fe=0x1a -x1:0x620=0xfe
+test_fuzz 1 6 "=nodiscard" 16384 -x1:0x2fe=0x1a -x1:0x620=0xfe
test_fuzz 1 131 "" 16384 -u2=8192
test_fuzz 1 131 "" 100000 -c1=8192
# TODO: A lot more tests, with and without nodiscard
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package patterns-base for openSUSE:Factory checked in at 2023-03-01 16:13:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/patterns-base (Old)
and /work/SRC/openSUSE:Factory/.patterns-base.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "patterns-base"
Wed Mar 1 16:13:39 2023 rev:93 rq:1068127 version:20200505
Changes:
--------
--- /work/SRC/openSUSE:Factory/patterns-base/patterns-base.changes 2022-09-10 20:17:17.264828417 +0200
+++ /work/SRC/openSUSE:Factory/.patterns-base.new.31432/patterns-base.changes 2023-03-01 16:13:44.150501682 +0100
@@ -1,0 +2,10 @@
+Tue Feb 28 09:09:39 UTC 2023 - Dominique Leuenberger <dimstar(a)opensuse.org>
+
+- enhanced_base:
+ + Drop systemd-sysvinit recommends: that package has been renamed
+ to systemd-sysvcompat, but should not be needed on modern
+ systems anymore.
+ + Add systemd-coredump recommends: if already we see crashes,
+ it'd be good if users can report usable bugs (boo#1208713).
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ patterns-base.spec ++++++
--- /var/tmp/diff_new_pack.JTowNx/_old 2023-03-01 16:13:44.770504888 +0100
+++ /var/tmp/diff_new_pack.JTowNx/_new 2023-03-01 16:13:44.786504972 +0100
@@ -425,7 +425,7 @@
Recommends: sg3_utils
Recommends: smartmontools
Recommends: sudo
-Recommends: systemd-sysvinit
+Recommends: systemd-coredump
Recommends: time
Recommends: timezone
# autoconfig new printers - bnc#808014
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package flatpak for openSUSE:Factory checked in at 2023-03-01 16:13:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/flatpak (Old)
and /work/SRC/openSUSE:Factory/.flatpak.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "flatpak"
Wed Mar 1 16:13:38 2023 rev:78 rq:1068125 version:1.14.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/flatpak/flatpak.changes 2023-02-25 19:54:27.675026064 +0100
+++ /work/SRC/openSUSE:Factory/.flatpak.new.31432/flatpak.changes 2023-03-01 16:13:42.490493098 +0100
@@ -1,0 +2,28 @@
+Mon Feb 27 14:07:03 UTC 2023 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Update to version 1.14.3:
+ + When splitting an upgrade into two steps (download without
+ installing, and then upgrade without allowing further
+ downloads) like GNOME Software does, if an app is marked EOL
+ and superseded by a replacement, don't remove the superseded
+ app in the first step, which would result in the replacement
+ incorrectly not being installed.
+ + Fix a crash when --socket=gpg-agent is used.
+ + Fix a crash when listing apps if one of them is broken or
+ misconfigured.
+ + If an app has invalid syntax in its overrides or metadata,
+ mention the filename in the error message.
+ + Unset $GDK_BACKEND for apps, ensuring GTK apps with
+ --socket=fallback-x11 can work.
+ + Never try to export a parent of reserved directories as a
+ --filesystem, for example /run, which would prevent the app
+ from starting.
+ + Never try to export a --filesystem below /run/flatpak or
+ /run/host, which could similarly prevent the app from starting.
+ + The above change also fixes apps not starting if a --filesystem
+ is a symlink to the root directory.
+ + Show a warning when the --filesystem exists but cannot be
+ shared with the sandbox.
+- Drop flatpak-fix-gpg-agent-double-free.patch: Fixed upstream.
+
+-------------------------------------------------------------------
Old:
----
flatpak-1.14.2.tar.xz
flatpak-fix-gpg-agent-double-free.patch
New:
----
flatpak-1.14.3.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ flatpak.spec ++++++
--- /var/tmp/diff_new_pack.HAvvDj/_old 2023-03-01 16:13:43.014495808 +0100
+++ /var/tmp/diff_new_pack.HAvvDj/_new 2023-03-01 16:13:43.018495829 +0100
@@ -34,7 +34,7 @@
%define support_environment_generators 1
%endif
Name: flatpak
-Version: 1.14.2
+Version: 1.14.3
Release: 0
Summary: OSTree based application bundles management
License: LGPL-2.1-or-later
@@ -44,9 +44,9 @@
Source1: update-system-flatpaks.service
Source2: update-system-flatpaks.timer
Source3: https://flathub.org/repo/flathub.flatpakrepo
+# PATCH-FEATURE-OPENSUSE polkit_rules_usability.patch -- Make the rules comply with openSUSE expectations
Patch0: polkit_rules_usability.patch
-# PATCH-FIX-UPSTREAM flatpak-fix-gpg-agent-double-free.patch bsc#1207434 alynx.zhou(a)suse.com -- Fix double free in in handling gpg-agent sockets
-Patch1: flatpak-fix-gpg-agent-double-free.patch
+
BuildRequires: bison
BuildRequires: bubblewrap >= %{bubblewrap_version}
BuildRequires: docbook-xsl-stylesheets
++++++ flatpak-1.14.2.tar.xz -> flatpak-1.14.3.tar.xz ++++++
++++ 24410 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package openblas for openSUSE:Factory checked in at 2023-03-01 16:13:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openblas (Old)
and /work/SRC/openSUSE:Factory/.openblas.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openblas"
Wed Mar 1 16:13:37 2023 rev:56 rq:1068124 version:0.3.21
Changes:
--------
--- /work/SRC/openSUSE:Factory/openblas/openblas.changes 2023-02-21 15:35:34.244124485 +0100
+++ /work/SRC/openSUSE:Factory/.openblas.new.31432/openblas.changes 2023-03-01 16:13:41.342487161 +0100
@@ -1,0 +2,15 @@
+Fri Feb 24 09:57:34 UTC 2023 - Egbert Eich <eich(a)suse.com>
+
+- Recreate old library scheme for existing products:
+ It turned out the new scheme on existing systems has
+ been causing package breakages.
+- Do not generate baselibs.conf for HPC builds.
+- Add support for gcc11 & 12.
+- For SLE/Leap on x86_64 and s390x do not mix compiler versions
+ as this will make the gfortran ABI version inconsistent. Instead
+ use the stock compiler and set the list of kernels for x86_64
+ cores explicitly as Cooperlake requires compiler intrinsics
+ which are not provided by gcc 7.
+- Require at least 7G of disk space for building.
+
+-------------------------------------------------------------------
New:
----
_constraints
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openblas.spec ++++++
--- /var/tmp/diff_new_pack.X3aZoH/_old 2023-03-01 16:13:42.086491009 +0100
+++ /var/tmp/diff_new_pack.X3aZoH/_new 2023-03-01 16:13:42.094491049 +0100
@@ -135,7 +135,35 @@
%{bcond_without hpc}
%endif
-%ifarch ppc64le x86_64 s390x
+%if "%flavor" == "gnu11-hpc"
+%define compiler_family gnu
+%define c_f_ver 11
+%{bcond_without hpc}
+%endif
+
+%if "%flavor" == "gnu11-hpc-pthreads"
+%define compiler_family gnu
+%define c_f_ver 11
+%define ext pthreads
+%define build_flags USE_THREAD=1 USE_OPENMP=0
+%{bcond_without hpc}
+%endif
+
+%if "%flavor" == "gnu12-hpc"
+%define compiler_family gnu
+%define c_f_ver 12
+%{bcond_without hpc}
+%endif
+
+%if "%flavor" == "gnu12-hpc-pthreads"
+%define compiler_family gnu
+%define c_f_ver 12
+%define ext pthreads
+%define build_flags USE_THREAD=1 USE_OPENMP=0
+%{bcond_without hpc}
+%endif
+
+%ifarch ppc64le
%if 0%{?c_f_ver} > 9
%else
%if 0%{?sle_version} == 150500
@@ -149,6 +177,11 @@
%endif
%endif
%endif
+%ifarch x86_64
+ %if 0%{?sle_version} && 0%{?c_f_ver} < 11
+ %define dynamic_list DYNAMIC_LIST="PRESCOTT CORE2 NEHALEM BARCELONA SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR HASWELL ZEN SKYLAKEX"
+ %endif
+%endif
%if %{without hpc}
%define so_a %{so_v}
@@ -308,6 +341,7 @@
cp %{SOURCE2} .
%endif
+%if %{without hpc}
# create baselibs.conf based on flavor
cat > %{_sourcedir}/baselibs.conf <<EOF
lib%{name}%{so_a}
@@ -315,8 +349,9 @@
lib%{name}-devel
+%{p_libdir}/libopenblas\.so
requires -%{name}-<targettype>
- requires "lib%{name}%{?so_v}-<targettype> = <version>"
+ requires "lib%{name}%{?so_a}-<targettype> = <version>"
EOF
+%endif
%build
@@ -386,8 +421,11 @@
[[ -z $jobs ]] && jobs=1
# NEVER use %%_smp_mflags with top level make:
# set MAKE_NB_JOBS instead and let the build do the work!
-# Do not use LIBNAMESUFFIX as it will not allow the different flavors to
-# be plugin replacements of each other
+# Do not use LIBNAMESUFFIX for new builds as it will not allow
+# the different flavors to be plugin replacements of each other
+%if 0%{?suse_version} <= 1500 && %{without hpc}
+%define libnamesuffix LIBNAMESUFFIX=%flavor
+%endif
make MAKE_NB_JOBS=$jobs %{?openblas_target} %{?build_flags} \
%{?openblas_opt} \
COMMON_OPT="%{optflags} %{?addopt}" \
@@ -396,7 +434,8 @@
OPENBLAS_INCLUDE_DIR=%{p_includedir} \
OPENBLAS_CMAKE_DIR=%{p_cmakedir} \
PREFIX=%{p_prefix} \
- %{!?with_hpc:FC=gfortran CC=gcc%{?cc_v:-%{cc_v}} %{?cc_v:CEXTRALIB=""}} \
+ %{?dynamic_list} \
+ %{!?with_hpc:%{?libnamesuffix} FC=gfortran CC=gcc%{?cc_v:-%{cc_v}} %{?cc_v:CEXTRALIB=""}} \
%{?ldflags_tests:LDFLAGS_TESTS=%{ldflags_tests}} \
%{?with_hpc:%{?cc_v:CC=gcc-%{cc_v} CEXTRALIB=""}}
@@ -410,6 +449,7 @@
OPENBLAS_LIBRARY_DIR=%{p_libdir} \
OPENBLAS_INCLUDE_DIR=%{p_includedir} \
OPENBLAS_CMAKE_DIR=%{p_cmakedir} \
+ %{?libnamesuffix} \
PREFIX=%{p_prefix}
# Delete info about OBS host cpu
@@ -431,18 +471,21 @@
# Remove library type specific so. This is solved differently.
# Needed when not using LIBNAMESUFFIX.
+%if 0%{!?libnamesuffix:1}
rm -f %{buildroot}%{p_libdir}/lib%{pname}*-r%{version}.so
rm -f %{buildroot}%{p_libdir}/lib%{pname}*-r%{version}.a
rm -f %{buildroot}%{p_libdir}/lib%{pname}.so
+%endif
# Instead set up new 'devel'-link for flavor:
ln -s lib%{pname}.so.%{so_v} %{buildroot}%{p_libdir}/lib%{pname}.so
# Put libraries in correct location
rm -rf %{buildroot}%{p_libdir}/lib%{name}*
-# Install the serial library
-install -D -p -m 755 lib%{pname}.so %{buildroot}%{p_libdir}/lib%{pname}.so.%{so_v}
-install -D -p -m 644 lib%{pname}.a %{buildroot}%{p_libdir}/lib%{pname}.a
+# Install library
+%define orgname %{?libnamesuffix:%{name}}%{!?libnamesuffix:%{pname}}
+install -D -p -m 755 lib%{orgname}.so %{buildroot}%{p_libdir}/lib%{pname}.so.%{so_v}
+install -D -p -m 644 lib%{orgname}.a %{buildroot}%{p_libdir}/lib%{pname}.a
# Fix source permissions (also applies to LAPACK)
find -name \*.f -exec chmod 644 {} +
@@ -467,6 +510,11 @@
ln -s %{_sysconfdir}/alternatives/openblas-default%{?a_x}/cmake/openblas %{buildroot}/%{_libdir}/cmake/
%endif
+# Compatibility Links
+%if 0%{?libnamesuffix:1}
+ln -s openblas-%{flavor}/lib%{pname}.so.%{so_v} %{buildroot}%{_libdir}/lib%{name}.so.%{so_v}
+ln -s openblas-%{flavor}/lib%{pname}.so %{buildroot}%{_libdir}/lib%{name}.so
+%endif
%else # with hpc
# HPC module file
@@ -560,6 +608,7 @@
%{p_libdir}/lib%{pname}.so.%{so_v}
%if %{without hpc}
%dir %{p_libdir}
+%{?libnamesuffix:%{_libdir}/lib%{name}.so.%{so_v}}
# Created by %%post
%ghost %{_libdir}/lib%{pname}.so.%{so_v}
%ghost %{_libdir}/openblas-default
@@ -580,6 +629,7 @@
%files -n lib%{name}-devel
%{p_libdir}/lib%{pname}.so
+%{?libnamesuffix:%{_libdir}/lib%{name}.so}
%{p_cmakedir}/
%if %{with hpc}
%license LICENSE
++++++ _constraints ++++++
<?xml version="1.0" encoding="UTF-8"?>
<constraints>
<hardware>
<disk>
<size unit="G">7</size>
</disk>
</hardware>
</constraints>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package patterns-fonts for openSUSE:Factory checked in at 2023-03-01 16:13:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/patterns-fonts (Old)
and /work/SRC/openSUSE:Factory/.patterns-fonts.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "patterns-fonts"
Wed Mar 1 16:13:35 2023 rev:9 rq:1068091 version:20170319
Changes:
--------
--- /work/SRC/openSUSE:Factory/patterns-fonts/patterns-fonts.changes 2022-07-21 11:33:04.530931650 +0200
+++ /work/SRC/openSUSE:Factory/.patterns-fonts.new.31432/patterns-fonts.changes 2023-03-01 16:13:40.394482258 +0100
@@ -1,0 +2,7 @@
+Mon Feb 27 02:31:04 UTC 2023 - Gordon Leung <pirateclip(a)protonmail.com>
+
+- Switch efont-unicode-bitmap-fonts with babelstone-han-fonts
+ * The efonts have not been updated since 2004
+ * Babelstone Han fonts just got another update on Jan 1 2023
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ patterns-fonts.spec ++++++
--- /var/tmp/diff_new_pack.t5uiJ5/_old 2023-03-01 16:13:41.126486044 +0100
+++ /var/tmp/diff_new_pack.t5uiJ5/_new 2023-03-01 16:13:41.130486065 +0100
@@ -88,7 +88,7 @@
Recommends: adobe-sourceserifpro-fonts
Recommends: ghostscript-fonts-other
# noto-sans and noto-sans-cjk pulls in too much (>500MiB!)
-Recommends: efont-unicode-bitmap-fonts
+Recommends: babelstone-han-fonts
Recommends: noto-sans-fonts
Recommends: stix-fonts
Recommends: texlive-lm-fonts
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libHX for openSUSE:Factory checked in at 2023-03-01 16:13:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libHX (Old)
and /work/SRC/openSUSE:Factory/.libHX.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libHX"
Wed Mar 1 16:13:34 2023 rev:71 rq:1068082 version:4.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/libHX/libHX.changes 2023-01-30 17:24:41.200960493 +0100
+++ /work/SRC/openSUSE:Factory/.libHX.new.31432/libHX.changes 2023-03-01 16:13:39.342476818 +0100
@@ -1,0 +2,12 @@
+Mon Feb 27 13:57:50 UTC 2023 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 4.12
+ * Plug a memory leak in HX_inet_listen
+
+-------------------------------------------------------------------
+Mon Feb 27 09:30:07 UTC 2023 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 4.11
+ * Four new socket utility functions
+
+-------------------------------------------------------------------
Old:
----
libHX-4.10.tar.asc
libHX-4.10.tar.xz
New:
----
libHX-4.12.tar.asc
libHX-4.12.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libHX.spec ++++++
--- /var/tmp/diff_new_pack.aERtg9/_old 2023-03-01 16:13:40.030480377 +0100
+++ /var/tmp/diff_new_pack.aERtg9/_new 2023-03-01 16:13:40.034480397 +0100
@@ -18,7 +18,7 @@
Name: libHX
%define lname libHX32
-Version: 4.10
+Version: 4.12
Release: 0
Summary: Collection of routines for C and C++ programming
License: LGPL-2.1-or-later
++++++ libHX-4.10.tar.xz -> libHX-4.12.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/configure new/libHX-4.12/configure
--- old/libHX-4.10/configure 2023-01-29 15:20:47.732895627 +0100
+++ new/libHX-4.12/configure 2023-02-27 14:55:44.471237664 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for libHX 4.10.
+# Generated by GNU Autoconf 2.71 for libHX 4.12.
#
#
# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -618,8 +618,8 @@
# Identity of this package.
PACKAGE_NAME='libHX'
PACKAGE_TARNAME='libhx'
-PACKAGE_VERSION='4.10'
-PACKAGE_STRING='libHX 4.10'
+PACKAGE_VERSION='4.12'
+PACKAGE_STRING='libHX 4.12'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1375,7 +1375,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libHX 4.10 to adapt to many kinds of systems.
+\`configure' configures libHX 4.12 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1446,7 +1446,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libHX 4.10:";;
+ short | recursive ) echo "Configuration of libHX 4.12:";;
esac
cat <<\_ACEOF
@@ -1561,7 +1561,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libHX configure 4.10
+libHX configure 4.12
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2195,7 +2195,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libHX $as_me 4.10, which was
+It was created by libHX $as_me 4.12, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3684,7 +3684,7 @@
# Define the identity of the package.
PACKAGE='libhx'
- VERSION='4.10'
+ VERSION='4.12'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -18771,7 +18771,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libHX $as_me 4.10, which was
+This file was extended by libHX $as_me 4.12, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18839,7 +18839,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-libHX config.status 4.10
+libHX config.status 4.12
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/configure.ac new/libHX-4.12/configure.ac
--- old/libHX-4.10/configure.ac 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/configure.ac 2023-02-27 14:55:08.000000000 +0100
@@ -1,4 +1,4 @@
-AC_INIT([libHX], [4.10])
+AC_INIT([libHX], [4.12])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/doc/api.rst new/libHX-4.12/doc/api.rst
--- old/libHX-4.10/doc/api.rst 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/doc/api.rst 2023-02-27 14:55:08.000000000 +0100
@@ -9,6 +9,10 @@
====== ====== ====== ========================================
RMV MinVer FirstA Name
====== ====== ====== ========================================
+4.11 4.11 4.11 HX_addrport_split
+4.11 4.11 4.11 HX_inet_connect
+4.11 4.11 4.11 HX_inet_listen
+4.11 4.11 4.11 HX_local_listen
4.9 4.9 4.9 HX_sockaddr_is_local
4.9 4.9 4.9 HX_ipaddr_is_local
4.7 4.7 4.7 HXQUOTE_BASE64IMAP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/doc/changelog.rst new/libHX-4.12/doc/changelog.rst
--- old/libHX-4.10/doc/changelog.rst 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/doc/changelog.rst 2023-02-27 14:55:08.000000000 +0100
@@ -1,3 +1,20 @@
+v4.12 (2023-02-27)
+==================
+
+Fixes:
+
+* Plug a memory leak in HX_inet_listen
+
+
+v4.11 (2023-02-26)
+==================
+
+Enhancements:
+
+* socket: add HX_addrport_split, HX_inet_connect, HX_inet_listen,
+ HX_local_listen
+
+
v4.10 (2023-01-29)
==================
@@ -116,61 +133,3 @@
Fixes:
* proc: re-close pipes when ``HXproc_build_pipes`` failed
-
-
-v3.26 (2021-08-03)
-==================
-
-Fixes:
-
-* io: cure a potential infinite loop on EOF with HXio_fullread()
-* io: HXio_fullread() now returns actual bytes read rather than bytes requested
-* time: rectified HX_timeval_sub producing wrong results
-
-Changes:
-
-* nullptr checks were added to HXshconfig_free, HXformat_free, HXdeque_free and
- HXmap_free to make their behavior be in line with free(3).
-* Documentation has been switched to reStructured Text.
-
-
-v3.25 (2020-05-14)
-==================
-
-Fixes:
-
-* string: fix out-of-bounds access when calling ``HX_strlcpy(x,y,0)``
-
-Changes:
-
-* string: ``HX_split4`` renamed to ``HX_split_inplace``
-* string: ``HX_split5`` renamed to ``HX_split_fixed``
-* defs.h: removed partially implementation of ``FIELD_SIZEOF``
-* defs.h: removed custom ``offsetof`` definition; you will need to include
- ``<stddef.h>`` or ``<cstddef>`` now.
-
-
-v3.24 (2018-10-17)
-==================
-
-Fixes:
-
-* defs: avoid compiler warning when using ``HX_list_for_each`` in C++
-* opt: synchronize ``HXOPT_AUTOHELP`` C behavior to C++ mode
-
-
-v3.23 (2018-08-28)
-==================
-
-Enhancements:
-
-* opt: the option parser now recognizes long option abbreviations
-* io: use modern ``readdir`` rather than ``readdir_r``
-
-
-v3.22 (2014-08-25)
-==================
-
-Enhancements:
-
-* string: add the ``HXQUOTE_SQLBQUOTE`` quoting variant
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/doc/socket_functions.rst new/libHX-4.12/doc/socket_functions.rst
--- old/libHX-4.10/doc/socket_functions.rst 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/doc/socket_functions.rst 2023-02-27 14:55:08.000000000 +0100
@@ -6,10 +6,46 @@
#include <libHX/socket.h>
+ int HX_addrport_split(const char *spec, char *host, size_t hsize, uint16_t *port);
+ int HX_inet_connect(const char *host, uint16_t port, unsigned int oflags);
+ int HX_inet_listen(const char *host, uint16_t port);
+ int HX_local_listen(const char *path);
int HX_socket_from_env(const struct addrinfo *ai, const char *intf);
int HX_sockaddr_is_local(const struct sockaddr *, socklen_t, unsigned int flags);
int HX_ipaddr_is_local(const char *, unsigned int flags);
+``HX_addrport_split``
+ Splits a host specification like ``[fe80::1]:80`` or ``127.0.0.1:80``
+ into a host and port part. The ``host`` parameter should point to a
+ buffer of size ``hsize``. ``port`` may be NULL. If ``spec`` did not
+ contain a port part, ``*port`` will *not* be updated, so it is wise to
+ set a default port first like in the example below. Upon success, the
+ value 2 is returned if both a host and a port were parsed (irrespective
+ of ``port`` being NULL or not). The value 1 is returned if only a host
+ portion was parsed. Upon error, a negative errno value is returned.
+
+``HX_inet_connect``
+ The function first resolves the specified host or IPv6/IPv4 address
+ (must not be enclosed in square brackets), and then attempts to connect
+ to one of the addresses. The order of evaluation is dependent upon the
+ system defaults. (It may choose whatever protocol is offered by the
+ system.) ``oflags`` is a bitset which may contain ``O_NONBLOCK``, else
+ must be 0. Upon success, a socket file descriptor is returned. Upon
+ failure, a negative errno code is returned.
+
+``HX_inet_listen``
+ The function first resolves ``host`` using ``getaddrinfo()` with
+ ``AI_PASSIVE``, then using ``HX_socket_from_env`` looks in the
+ environment for a matching socket to pick up, and otherwise uses the
+ first result from getaddrinfo to create a new socket. Upon error, a
+ negative errno value is returned.
+
+``HX_local_listen``
+ The function creates a local system-specific socket. Using
+ ``HX_socket_from_env``, it will attempt to pick up a matching socket
+ from the environment, and otherwise create a new socket. Upon error, a
+ negative errno value is returned.
+
``HX_socket_from_env``
The function looks up the current process's file descriptors for a
socket that is listening and which matches the given addrinfo and
@@ -32,3 +68,15 @@
Takes a text representation of an IPv6/IPv4 address and, after
transformation, calls ``HX_sockaddr_is_local``. ``flags`` and
return value behave the same as that.
+
+Examples
+--------
+
+.. code-block:: c
+
+ char host[256];
+ uint16_t port = 443;
+ /* port won't be updated */
+ HX_addrport_split("example.de", host, sizeof(host), &port);
+ /* port will be updated */
+ HX_addrport_split("example.de:80", host, sizeof(host), &port);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/include/libHX/libxml_helper.h new/libHX-4.12/include/libHX/libxml_helper.h
--- old/libHX-4.10/include/libHX/libxml_helper.h 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/include/libHX/libxml_helper.h 2023-02-27 14:55:08.000000000 +0100
@@ -7,6 +7,7 @@
# include <string.h>
#endif
#include <libxml/parser.h>
+#include <libHX/defs.h>
#ifdef __cplusplus
extern "C" {
@@ -30,6 +31,10 @@
#endif
}
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
static __inline__ char *xml_getprop(xmlNode *node, const char *attr)
{
#ifdef __cplusplus
@@ -106,7 +111,15 @@
}
#ifdef __cplusplus
-} /* extern "C" */
+static __inline__ const char *xml_getprop(const xmlNode *node, const char *attr)
+{
+ return xml_getprop(const_cast<xmlNode *>(node), attr);
+}
+static __inline__ char *xml_getnsprop(const xmlNode *node, const char *nsprefix,
+ const char *attr)
+{
+ return xml_getnsprop(const_cast<const xmlNode *>(node), nsprefix, attr);
+}
#endif
#endif /* _LIBHX_LIBXML_HELPER_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/include/libHX/socket.h new/libHX-4.12/include/libHX/socket.h
--- old/libHX-4.10/include/libHX/socket.h 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/include/libHX/socket.h 2023-02-27 14:55:08.000000000 +0100
@@ -1,6 +1,7 @@
#ifndef _LIBHX_SOCKET_H
#define _LIBHX_SOCKET_H 1
+#include <stdint.h>
#ifdef _WIN32
# include <ws2tcpip.h>
#else
@@ -12,6 +13,10 @@
extern "C" {
#endif
+extern int HX_addrport_split(const char *spec, char *host, size_t hsize, uint16_t *port);
+extern int HX_inet_connect(const char *host, uint16_t port, unsigned int oflags);
+extern int HX_inet_listen(const char *host, uint16_t port);
+extern int HX_local_listen(const char *path);
extern int HX_socket_from_env(const struct addrinfo *, const char *intf);
extern int HX_sockaddr_is_local(const struct sockaddr *, socklen_t, unsigned int flags);
extern int HX_ipaddr_is_local(const char *, unsigned int flags);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/src/Makefile.am new/libHX-4.12/src/Makefile.am
--- old/libHX-4.10/src/Makefile.am 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/src/Makefile.am 2023-02-27 14:55:08.000000000 +0100
@@ -13,7 +13,7 @@
mc.c misc.c opt.c proc.c \
rand.c socket.c string.c time.c
libHX_la_LIBADD = ${libdl_LIBS} -lm ${libpthread_LIBS} ${librt_LIBS}
-libHX_la_LDFLAGS = -no-undefined -version-info 36:0:4
+libHX_la_LDFLAGS = -no-undefined -version-info 37:0:5
if WITH_GNU_LD
libHX_la_LDFLAGS += -Wl,--version-script=${srcdir}/libHX.map
endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/src/Makefile.in new/libHX-4.12/src/Makefile.in
--- old/libHX-4.10/src/Makefile.in 2023-01-29 15:20:48.268899141 +0100
+++ new/libHX-4.12/src/Makefile.in 2023-02-27 14:55:46.139240599 +0100
@@ -780,7 +780,7 @@
proc.c rand.c socket.c string.c time.c $(am__append_3)
libHX_la_LIBADD = ${libdl_LIBS} -lm ${libpthread_LIBS} ${librt_LIBS} \
$(am__append_4)
-libHX_la_LDFLAGS = -no-undefined -version-info 36:0:4 $(am__append_2)
+libHX_la_LDFLAGS = -no-undefined -version-info 37:0:5 $(am__append_2)
EXTRA_libHX_la_DEPENDENCIES = libHX.map
libHX_rtcheck_la_SOURCES = rtcheck.c
libHX_rtcheck_la_LIBADD = ${libdl_LIBS}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/src/io.c new/libHX-4.12/src/io.c
--- old/libHX-4.10/src/io.c 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/src/io.c 2023-02-27 14:55:08.000000000 +0100
@@ -11,6 +11,7 @@
# include "config.h"
#endif
#include <sys/stat.h>
+#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
@@ -594,39 +595,37 @@
EXPORT_SYMBOL ssize_t HXio_fullread(int fd, void *vbuf, size_t size)
{
char *buf = vbuf;
- size_t done = 0;
if (size > SSIZE_MAX)
size = SSIZE_MAX;
- while (done < size) {
- ssize_t ret = read(fd, buf, size - done);
+ while (size > 0) {
+ ssize_t ret = read(fd, buf, size);
if (ret < 0)
return ret;
else if (ret == 0)
break;
- done += ret;
buf += ret;
+ size -= ret;
}
- return done;
+ return buf - static_cast(char *, vbuf);
}
EXPORT_SYMBOL ssize_t HXio_fullwrite(int fd, const void *vbuf, size_t size)
{
const char *buf = vbuf;
- size_t done = 0;
if (size > SSIZE_MAX)
size = SSIZE_MAX;
- while (done < size) {
- ssize_t ret = write(fd, buf, size - done);
+ while (size > 0) {
+ ssize_t ret = write(fd, buf, size);
if (ret < 0)
return ret;
else if (ret == 0)
break;
- done += ret;
buf += ret;
+ size -= ret;
}
- return done;
+ return buf - static_cast(const char *, vbuf);
}
#if __linux__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/src/libHX.map new/libHX-4.12/src/libHX.map
--- old/libHX-4.10/src/libHX.map 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/src/libHX.map 2023-02-27 14:55:08.000000000 +0100
@@ -159,3 +159,11 @@
HX_ipaddr_is_local;
HX_sockaddr_is_local;
} LIBHX_4.3;
+
+LIBHX_4.11 {
+global:
+ HX_addrport_split;
+ HX_inet_connect;
+ HX_inet_listen;
+ HX_local_listen;
+} LIBHX_4.9;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/src/rand.c new/libHX-4.12/src/rand.c
--- old/libHX-4.10/src/rand.c 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/src/rand.c 2023-02-27 14:55:08.000000000 +0100
@@ -27,7 +27,7 @@
static unsigned int HXrand_obtain_seed(void)
{
- unsigned int s;
+ unsigned long s;
#if defined(HAVE_CLOCK_GETTIME)
struct timespec tv;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/src/socket.c new/libHX-4.12/src/socket.c
--- old/libHX-4.10/src/socket.c 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/src/socket.c 2023-02-27 14:55:08.000000000 +0100
@@ -17,10 +17,12 @@
#ifdef _WIN32
# include <ws2tcpip.h>
#else
+# include <fcntl.h>
# include <netdb.h>
# include <unistd.h>
# include <netinet/in.h>
# include <sys/socket.h>
+# include <sys/stat.h>
#endif
#ifdef HAVE_SYS_UN_H
# include <sys/un.h>
@@ -46,6 +48,256 @@
# define AI_V4MAPPED 0
#endif
+/**
+ * Return the pointer to the singular colon character, any other input
+ * yields nullptr.
+ */
+static inline const char *has_exactly_one_colon(const char *s)
+{
+ s = strchr(s, ':');
+ if (s == nullptr)
+ return nullptr;
+ return strchr(s + 1, ':') == nullptr ? s : nullptr;
+}
+
+/**
+ * @spec: "[" HOST-ANY "]" [ ":" PORT ]
+ * HOST-NAME [ ":" PORT ]
+ * HOST-IPV4 [ ":" PORT ]
+ * HOST-IPV6
+ * @host: buffer for placing the extracted hostname
+ * (can overlap @spec)
+ * @hsize: buffer size for @host
+ * @port: storage space for extracted port number
+ * (can be nullptr)
+ *
+ * Returns <0 (error code) if unparsable or if the output buffer is too small.
+ * Success if on >=0.
+ */
+int HX_addrport_split(const char *spec, char *host,
+ size_t hbufsz, uint16_t *pport)
+{
+ if (*spec == '[') {
+ /* We also happen to allow IPv4 addrs and hostnames in [] */
+ ++spec;
+ const char *end = strchr(spec, ']');
+ if (end == nullptr)
+ return -EINVAL;
+ unsigned long hlen = end - spec;
+ if (hlen >= hbufsz)
+ return -E2BIG;
+ if (*++end == '\0')
+ return 1;
+ if (*end++ != ':')
+ return -EINVAL;
+ char *nend = nullptr;
+ uint16_t port = strtoul(end, &nend, 10);
+ if (nend == nullptr || *nend != '\0')
+ return -EINVAL;
+ memmove(host, spec, hlen);
+ host[hlen] = '\0';
+ if (pport == nullptr)
+ return 2;
+ *pport = port;
+ return 2;
+ }
+ const char *onecolon = has_exactly_one_colon(spec);
+ if (onecolon != nullptr) {
+ unsigned long hlen = onecolon - spec;
+ if (hlen >= hbufsz)
+ return -E2BIG;
+ char *nend = nullptr;
+ uint16_t port = strtoul(onecolon + 1, &nend, 10);
+ if (nend == nullptr || *nend != '\0')
+ return -EINVAL;
+ memmove(host, spec, hlen);
+ host[hlen] = '\0';
+ if (pport == nullptr)
+ return 2;
+ *pport = port;
+ return 2;
+ }
+ size_t hlen = strlen(spec);
+ if (hlen >= SIZE_MAX || ++hlen >= hbufsz)
+ return -E2BIG;
+ memmove(host, spec, hlen);
+ return 1;
+}
+
+static int HX_inet_lookup(const char *host, uint16_t port, unsigned int xflags,
+ struct addrinfo **res)
+{
+ struct addrinfo hints = {};
+#if defined(AI_V4MAPPED)
+ hints.ai_flags = AI_V4MAPPED | xflags;
+#else
+ hints.ai_flags = xflags;
+#endif
+ hints.ai_family = AF_INET6;
+ hints.ai_socktype = SOCK_STREAM;
+
+ char portbuf[HXSIZEOF_Z32];
+ snprintf(portbuf, sizeof(portbuf), "%hu", port);
+ return getaddrinfo(host, port == 0 ? nullptr : portbuf, &hints, res);
+}
+
+int HX_inet_connect(const char *host, uint16_t port, unsigned int oflags)
+{
+ struct addrinfo *aires = nullptr;
+ int ret = HX_inet_lookup(host, port, AI_ADDRCONFIG, &aires);
+ int saved_errno = 0;
+ for (const struct addrinfo *r = aires; r != nullptr; r = r->ai_next) {
+ int fd = socket(r->ai_family, r->ai_socktype, r->ai_protocol);
+ if (fd < 0) {
+ if (saved_errno == 0)
+ saved_errno = errno;
+ continue;
+ }
+#ifdef O_NONBLOCK
+ if (oflags & O_NONBLOCK) {
+ int flags = fcntl(fd, F_GETFL, 0);
+ if (flags < 0)
+ flags = 0;
+ flags |= O_NONBLOCK;
+ if (fcntl(fd, F_SETFL, flags) != 0) {
+ saved_errno = errno;
+ close(fd);
+ continue;
+ }
+ }
+#endif
+ ret = connect(fd, r->ai_addr, r->ai_addrlen);
+ if (ret == 0) {
+ freeaddrinfo(aires);
+ return fd;
+ }
+#ifdef O_NONBLOCK
+ if ((errno == EWOULDBLOCK || errno == EINPROGRESS) &&
+ (oflags & O_NONBLOCK)) {
+ freeaddrinfo(aires);
+ return fd;
+ }
+#endif
+ saved_errno = errno;
+ close(fd);
+ }
+ if (aires == nullptr && saved_errno == 0)
+ saved_errno = EHOSTUNREACH;
+ if (aires != nullptr)
+ freeaddrinfo(aires);
+ return -(errno = saved_errno);
+}
+
+static int HX_gai_listen(const struct addrinfo *r)
+{
+ int fd = socket(r->ai_family, r->ai_socktype, r->ai_protocol);
+ if (fd < 0)
+ return -2;
+ static const int y = 1;
+ if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, STUPIDWIN(&y), sizeof(y)) < 0)
+ /* warn setsockopt: %s, strerror(errno)) */ ;
+ int ret = bind(fd, r->ai_addr, r->ai_addrlen);
+ if (ret != 0) {
+ int se = errno;
+ close(fd);
+ errno = se;
+ return -1;
+ }
+ ret = listen(fd, SOMAXCONN);
+ if (ret != 0) {
+ int se = errno;
+ close(fd);
+ errno = se;
+ return -2;
+ }
+ return fd;
+}
+
+int HX_inet_listen(const char *host, uint16_t port)
+{
+ struct addrinfo *aires = nullptr;
+ int ret = HX_inet_lookup(host, port, AI_PASSIVE, &aires);
+ if (ret != 0)
+ ;
+ int saved_errno = EHOSTUNREACH;
+ bool use_env = getenv("HX_LISTEN_TOP_FD") != nullptr || getenv("LISTEN_FDS") != nullptr;
+ for (const struct addrinfo *r = aires; r != nullptr; r = r->ai_next) {
+ if (use_env) {
+ int fd = HX_socket_from_env(r, nullptr);
+ if (fd >= 0) {
+ freeaddrinfo(aires);
+ return fd;
+ }
+ }
+ int fd = HX_gai_listen(r);
+ if (fd >= 0) {
+ freeaddrinfo(aires);
+ return fd;
+ }
+ saved_errno = errno;
+ if (fd == -2)
+ continue;
+ break;
+ }
+ if (aires != nullptr)
+ freeaddrinfo(aires);
+ return -(errno = saved_errno);
+}
+
+int HX_local_listen(const char *path)
+{
+#ifdef HAVE_SYS_UN_H
+ struct sockaddr_un u;
+ if (strlen(path) >= sizeof(u.sun_path))
+ return -EINVAL;
+ u.sun_family = AF_LOCAL;
+ strcpy(u.sun_path, path);
+ struct addrinfo r = {};
+ r.ai_flags = AI_PASSIVE;
+ r.ai_family = AF_LOCAL;
+ r.ai_socktype = SOCK_STREAM;
+ r.ai_addrlen = sizeof(u) - sizeof(u.sun_path) + strlen(u.sun_path) + 1;
+ r.ai_addr = reinterpret_cast(struct sockaddr *, &u);
+ bool use_env = getenv("HX_LISTEN_TOP_FD") != nullptr || getenv("LISTEN_FDS") != nullptr;
+ if (use_env) {
+ int fd = HX_socket_from_env(&r, nullptr);
+ if (fd >= 0)
+ return fd;
+ }
+ int ret = HX_gai_listen(&r);
+ if (ret >= 0)
+ return ret; /* fd */
+ if (ret == -2 || errno != EADDRINUSE)
+ return -errno;
+
+ struct stat sb;
+ ret = stat(path, &sb);
+ if (ret < 0)
+ return -errno;
+ if (!S_ISSOCK(sb.st_mode))
+ return -ENOTSOCK;
+
+ int testfd = socket(AF_LOCAL, SOCK_STREAM, 0);
+ if (testfd < 0)
+ return -errno;
+ ret = connect(testfd, r.ai_addr, r.ai_addrlen);
+ close(testfd);
+ if (ret == 0)
+ return -EADDRINUSE;
+
+ /* There will be a TOCTOU report, but what can you do... */
+ ret = unlink(path);
+ if (ret < 0 && errno != ENOENT)
+ return -errno;
+ ret = HX_gai_listen(&r);
+ if (ret >= 0)
+ return ret; /* fd */
+ return -errno;
+#else
+ return -EPROTONOSUPPORT;
+#endif
+}
+
static int try_sk_from_env(int fd, const struct addrinfo *ai, const char *intf)
{
int value = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/src/tc-list.c new/libHX-4.12/src/tc-list.c
--- old/libHX-4.10/src/tc-list.c 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/src/tc-list.c 2023-02-27 14:55:08.000000000 +0100
@@ -69,8 +69,14 @@
while ((obj = (pop ?
HXclist_pop(&strings_ct, struct text_object, list) :
HXclist_shift(&strings_ct, struct text_object, list)
- )) != NULL)
+ )) != NULL) {
printf("%s item %u (\"%s\")\n", msg[pop], ++i, obj->id);
+#ifdef __cplusplus
+ delete obj;
+#else
+ free(obj);
+#endif
+ }
printf("Remaining elements: %u\n", strings_ct.items);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libHX-4.10/src/tc-socket.c new/libHX-4.12/src/tc-socket.c
--- old/libHX-4.10/src/tc-socket.c 2023-01-29 15:20:04.000000000 +0100
+++ new/libHX-4.12/src/tc-socket.c 2023-02-27 14:55:08.000000000 +0100
@@ -7,6 +7,7 @@
#include <libHX/socket.h>
#ifndef _WIN32
# include <netdb.h>
+# include <unistd.h>
#endif
#ifndef AI_V4MAPPED
# define AI_V4MAPPED 0
@@ -19,6 +20,15 @@
"127.0.0.1", "127.0.0.2", "1.1.1.1", "255.255.255.255",
};
for (size_t i = 0; i < ARRAY_SIZE(addrs); ++i) {
+ char host[32] = {};
+ uint16_t port = 0;
+
+ int ret = HX_addrport_split(addrs[i], host, sizeof(host), &port);
+ if (ret >= 0)
+ printf("Parse \"%s\" -> [%s]:%hu\n", addrs[i], host, port);
+ else
+ return EXIT_FAILURE;
+
printf("%-16s\t", addrs[i]);
int lcl = HX_ipaddr_is_local(addrs[i], AI_V4MAPPED);
if (lcl < 0) {
@@ -27,5 +37,39 @@
}
printf("%d\n", lcl);
}
+
+ char host[32] = {};
+ uint16_t port = 0;
+ int ret = HX_addrport_split("[fe80::1]:80", host, sizeof(host), &port);
+ if (ret < 0 || port != 80)
+ return EXIT_FAILURE;
+ port = 443;
+ ret = HX_addrport_split("::80", host, sizeof(host), &port);
+ if (ret < 0 || port != 443)
+ return EXIT_FAILURE;
+ ret = HX_addrport_split(":::80", host, sizeof(host), &port);
+ if (ret < 0 || port != 443)
+ return EXIT_FAILURE;
+ ret = HX_addrport_split("0.0.0.0", host, sizeof(host), &port);
+ if (ret < 0 || port != 443)
+ return EXIT_FAILURE;
+ ret = HX_addrport_split("0.0.0.0:80", host, sizeof(host), &port);
+ if (ret < 0 || port != 80)
+ return EXIT_FAILURE;
+
+ int fd = HX_inet_connect("::1", 80, 0);
+ if (fd >= 0) {
+ printf("Connected to [::1]:80\n");
+ close(fd);
+ } else {
+ fprintf(stderr, "HX_inet_connect [::1]:80: %s\n", strerror(-fd));
+ }
+ fd = HX_inet_connect("::", 80, 0);
+ if (fd >= 0) {
+ printf("Connected to [::]:80\n");
+ close(fd);
+ } else {
+ fprintf(stderr, "HX_inet_connect [::]:80: %s\n", strerror(-fd));
+ }
return EXIT_SUCCESS;
}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package sudo for openSUSE:Factory checked in at 2023-03-01 16:13:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sudo (Old)
and /work/SRC/openSUSE:Factory/.sudo.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sudo"
Wed Mar 1 16:13:33 2023 rev:143 rq:1068081 version:1.9.13p2
Changes:
--------
--- /work/SRC/openSUSE:Factory/sudo/sudo.changes 2023-02-25 19:54:26.679019926 +0100
+++ /work/SRC/openSUSE:Factory/.sudo.new.31432/sudo.changes 2023-03-01 16:13:37.202465752 +0100
@@ -1,0 +2,12 @@
+Tue Feb 28 01:40:48 UTC 2023 - Jason Sikes <jsikes(a)suse.com>
+
+- Update to 1.9.13p2:
+
+ Fixed the --enable-static-sudoers option, broken in sudo 1.9.13.
+ GitHub issue #245.
+
+ Fixed a potential double-free bug when matching a sudoers rule
+ that contains a per-command chroot directive (CHROOT=dir).
+ This bug was introduced in sudo 1.9.8. [bsc#1208595]
+
+-------------------------------------------------------------------
Old:
----
sudo-1.9.13p1.tar.gz
sudo-1.9.13p1.tar.gz.sig
New:
----
sudo-1.9.13p2.tar.gz
sudo-1.9.13p2.tar.gz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ sudo.spec ++++++
--- /var/tmp/diff_new_pack.f3TL50/_old 2023-03-01 16:13:37.946469600 +0100
+++ /var/tmp/diff_new_pack.f3TL50/_new 2023-03-01 16:13:37.950469620 +0100
@@ -17,7 +17,7 @@
Name: sudo
-Version: 1.9.13p1
+Version: 1.9.13p2
Release: 0
Summary: Execute some commands as root
License: ISC
++++++ sudo-1.9.13p1.tar.gz -> sudo-1.9.13p2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/ChangeLog new/sudo-1.9.13p2/ChangeLog
--- old/sudo-1.9.13p1/ChangeLog 2023-02-16 19:46:48.000000000 +0100
+++ new/sudo-1.9.13p2/ChangeLog 2023-02-25 19:26:12.000000000 +0100
@@ -1,8 +1,48 @@
+2023-02-25 Todd C. Miller <Todd.Miller(a)sudo.ws>
+
+ * .hgtags:
+ Added tag SUDO_1_9_13p2 for changeset 2db7cee1cb77
+ [b0af73801130] [tip] <1.9>
+
+ * NEWS, configure, configure.ac:
+ Sudo 1.9.13p2.
+ [2db7cee1cb77] [SUDO_1_9_13p2] <1.9>
+
+2023-02-23 Todd C. Miller <Todd.Miller(a)sudo.ws>
+
+ * lib/util/lbuf.c:
+ Add missing include of errno.h.
+ [65ddd70d0c18] <1.9>
+
+ * lib/util/lbuf.c:
+ sudo_lbuf_expand: check for overflow when rounding to the nearest
+ power of 2. Problem deteced by oss-fuzz using the fuzz_sudoers
+ fuzzer.
+ [9357396fdaa0] <1.9>
+
+ * src/load_plugins.c:
+ Fix --enable-static-sudoers, broken in sudo 1.9.13.
+ sudo_qualify_plugin() should not try to fully-qualify the path to a
+ statically-compiled plugin. GitHub issue #245
+ [eca5f1f6555e] <1.9>
+
+2023-02-21 Todd C. Miller <Todd.Miller(a)sudo.ws>
+
+ * MANIFEST, plugins/sudoers/match_command.c,
+ plugins/sudoers/regress/fuzz/fuzz_sudoers.c,
+ plugins/sudoers/regress/testsudoers/test20.out.ok,
+ plugins/sudoers/regress/testsudoers/test20.sh,
+ plugins/sudoers/testsudoers.c, plugins/sudoers/visudo.c:
+ Fix potential double free for rules that include a CHROOT= option.
+ If a rule with a CHROOT= option matches the user, host and runas,
+ the user_cmnd variable could be freed twice.
+ [2c1477233f48] <1.9>
+
2023-02-16 Todd C. Miller <Todd.Miller(a)sudo.ws>
* .hgtags:
Added tag SUDO_1_9_13p1 for changeset 49e64402924f
- [97ae12488007] [tip] <1.9>
+ [97ae12488007] <1.9>
* NEWS, configure, configure.ac:
Merge sudo 1.9.13p1 from tip.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/MANIFEST new/sudo-1.9.13p2/MANIFEST
--- old/sudo-1.9.13p1/MANIFEST 2023-02-14 17:53:02.000000000 +0100
+++ new/sudo-1.9.13p2/MANIFEST 2023-02-25 19:21:47.000000000 +0100
@@ -1052,6 +1052,8 @@
plugins/sudoers/regress/testsudoers/test2.inc
plugins/sudoers/regress/testsudoers/test2.out.ok
plugins/sudoers/regress/testsudoers/test2.sh
+plugins/sudoers/regress/testsudoers/test20.out.ok
+plugins/sudoers/regress/testsudoers/test20.sh
plugins/sudoers/regress/testsudoers/test3.out.ok
plugins/sudoers/regress/testsudoers/test3.sh
plugins/sudoers/regress/testsudoers/test4.out.ok
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/NEWS new/sudo-1.9.13p2/NEWS
--- old/sudo-1.9.13p1/NEWS 2023-02-16 19:43:30.000000000 +0100
+++ new/sudo-1.9.13p2/NEWS 2023-02-25 19:24:29.000000000 +0100
@@ -1,3 +1,12 @@
+What's new in Sudo 1.9.13p2
+
+ * Fixed the --enable-static-sudoers option, broken in sudo 1.9.13.
+ GitHub issue #245.
+
+ * Fixed a potential double-free bug when matching a sudoers rule
+ that contains a per-command chroot directive (CHROOT=dir). This
+ bug was introduced in sudo 1.9.8.
+
What's new in Sudo 1.9.13p1
* Fixed a typo in the configure script that resulted in a line
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/configure new/sudo-1.9.13p2/configure
--- old/sudo-1.9.13p1/configure 2023-02-16 19:43:30.000000000 +0100
+++ new/sudo-1.9.13p2/configure 2023-02-25 19:24:29.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72a for sudo 1.9.13p1.
+# Generated by GNU Autoconf 2.72a for sudo 1.9.13p2.
#
# Report bugs to <https://bugzilla.sudo.ws/>.
#
@@ -614,8 +614,8 @@
# Identity of this package.
PACKAGE_NAME='sudo'
PACKAGE_TARNAME='sudo'
-PACKAGE_VERSION='1.9.13p1'
-PACKAGE_STRING='sudo 1.9.13p1'
+PACKAGE_VERSION='1.9.13p2'
+PACKAGE_STRING='sudo 1.9.13p2'
PACKAGE_BUGREPORT='https://bugzilla.sudo.ws/'
PACKAGE_URL=''
@@ -1636,7 +1636,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-'configure' configures sudo 1.9.13p1 to adapt to many kinds of systems.
+'configure' configures sudo 1.9.13p2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1702,7 +1702,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of sudo 1.9.13p1:";;
+ short | recursive ) echo "Configuration of sudo 1.9.13p2:";;
esac
cat <<\_ACEOF
@@ -1993,7 +1993,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-sudo configure 1.9.13p1
+sudo configure 1.9.13p2
generated by GNU Autoconf 2.72a
Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2671,7 +2671,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by sudo $as_me 1.9.13p1, which was
+It was created by sudo $as_me 1.9.13p2, which was
generated by GNU Autoconf 2.72a. Invocation command line was
$ $0$ac_configure_args_raw
@@ -24806,40 +24806,9 @@
;;
*)
-
-if test ${LIBTLS+y}
-then :
-
- case " $LIBTLS " in #(
- *" $f "*) :
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBTLS already contains \$f"; } >&5
- (: LIBTLS already contains $f) 2>&5
- ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } ;; #(
- *) :
-
- as_fn_append LIBTLS " $f"
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBTLS=\"\$LIBTLS\""; } >&5
- (: LIBTLS="$LIBTLS") 2>&5
- ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- ;;
-esac
-
-else case e in #(
- e)
- LIBTLS=$f
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBTLS=\"\$LIBTLS\""; } >&5
- (: LIBTLS="$LIBTLS") 2>&5
- ac_status=$?
- printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- ;;
-esac
-fi
-
+ # Do not use AX_APPEND_FLAG as it will break static builds by removing
+ # duplicates such as -lz or -latomic which are needed by -lssl and -lcrypto
+ LIBTLS="$LIBTLS $f"
;;
esac
done
@@ -36027,7 +35996,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by sudo $as_me 1.9.13p1, which was
+This file was extended by sudo $as_me 1.9.13p2, which was
generated by GNU Autoconf 2.72a. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -36095,7 +36064,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-sudo config.status 1.9.13p1
+sudo config.status 1.9.13p2
configured by $0, generated by GNU Autoconf 2.72a,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/configure.ac new/sudo-1.9.13p2/configure.ac
--- old/sudo-1.9.13p1/configure.ac 2023-02-16 19:43:30.000000000 +0100
+++ new/sudo-1.9.13p2/configure.ac 2023-02-25 19:24:29.000000000 +0100
@@ -18,7 +18,7 @@
dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
dnl
AC_PREREQ([2.69])
-AC_INIT([sudo], [1.9.13p1], [https://bugzilla.sudo.ws/] [sudo])
+AC_INIT([sudo], [1.9.13p2], [https://bugzilla.sudo.ws/] [sudo])
AC_CONFIG_HEADERS([config.h pathnames.h])
AC_CONFIG_SRCDIR([src/sudo.c])
AC_CONFIG_AUX_DIR([scripts])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/lib/util/lbuf.c new/sudo-1.9.13p2/lib/util/lbuf.c
--- old/sudo-1.9.13p1/lib/util/lbuf.c 2023-02-14 17:53:02.000000000 +0100
+++ new/sudo-1.9.13p2/lib/util/lbuf.c 2023-02-23 17:14:45.000000000 +0100
@@ -26,6 +26,7 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
+#include <errno.h>
#include "sudo_compat.h"
#include "sudo_debug.h"
@@ -70,6 +71,7 @@
debug_decl(sudo_lbuf_expand, SUDO_DEBUG_UTIL);
if (lbuf->len + extra + 1 <= lbuf->len) {
+ errno = ENOMEM;
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
"integer overflow updating lbuf->len");
lbuf->error = 1;
@@ -80,6 +82,13 @@
unsigned int new_size = sudo_pow2_roundup(lbuf->len + extra + 1);
char *new_buf;
+ if (new_size < lbuf->size) {
+ errno = ENOMEM;
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "integer overflow updating lbuf->size");
+ lbuf->error = 1;
+ debug_return_bool(false);
+ }
if (new_size < 1024)
new_size = 1024;
if ((new_buf = realloc(lbuf->buf, new_size)) == NULL) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/plugins/sudoers/match_command.c new/sudo-1.9.13p2/plugins/sudoers/match_command.c
--- old/sudo-1.9.13p1/plugins/sudoers/match_command.c 2023-02-14 17:53:02.000000000 +0100
+++ new/sudo-1.9.13p2/plugins/sudoers/match_command.c 2023-02-25 19:22:35.000000000 +0100
@@ -818,12 +818,16 @@
/* Rule-specific runchroot, reset user_cmnd and user_stat. */
int status;
+ /* Save old user_cmnd first, set_cmnd_path() will free it. */
saved_user_cmnd = user_cmnd;
+ user_cmnd = NULL;
if (user_stat != NULL)
saved_user_stat = *user_stat;
status = set_cmnd_path(runchroot);
- if (status != FOUND)
+ if (status != FOUND) {
+ user_cmnd = saved_user_cmnd;
saved_user_cmnd = NULL;
+ }
if (info != NULL)
info->status = status;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/plugins/sudoers/regress/fuzz/fuzz_sudoers.c new/sudo-1.9.13p2/plugins/sudoers/regress/fuzz/fuzz_sudoers.c
--- old/sudo-1.9.13p1/plugins/sudoers/regress/fuzz/fuzz_sudoers.c 2023-02-14 17:53:02.000000000 +0100
+++ new/sudo-1.9.13p2/plugins/sudoers/regress/fuzz/fuzz_sudoers.c 2023-02-25 19:21:47.000000000 +0100
@@ -45,6 +45,9 @@
static int fuzz_printf(int msg_type, const char *fmt, ...);
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
+/* For set_cmnd_path() */
+static const char *orig_cmnd;
+
/* Required to link with parser. */
struct sudo_user sudo_user;
struct passwd *list_pw;
@@ -104,8 +107,13 @@
int
set_cmnd_path(const char *runchroot)
{
- /* Cannot return FOUND without also setting user_cmnd to a new value. */
- return NOT_FOUND;
+ /* Reallocate user_cmnd to catch bugs in command_matches(). */
+ char *new_cmnd = strdup(orig_cmnd);
+ if (new_cmnd == NULL)
+ return NOT_FOUND_ERROR;
+ free(user_cmnd);
+ user_cmnd = new_cmnd;
+ return FOUND;
}
/* STUB */
@@ -277,11 +285,12 @@
/* The minimum needed to perform matching (user_cmnd must be dynamic). */
user_host = user_shost = user_runhost = user_srunhost = (char *)"localhost";
- user_cmnd = strdup("/usr/bin/id");
+ orig_cmnd = (char *)"/usr/bin/id";
+ user_cmnd = strdup(orig_cmnd);
if (user_cmnd == NULL)
goto done;
user_args = (char *)"-u";
- user_base = (char *)"id";
+ user_base = sudo_basename(user_cmnd);
/* Add a fake network interfaces. */
interfaces = get_interfaces();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/plugins/sudoers/regress/testsudoers/test20.out.ok new/sudo-1.9.13p2/plugins/sudoers/regress/testsudoers/test20.out.ok
--- old/sudo-1.9.13p1/plugins/sudoers/regress/testsudoers/test20.out.ok 1970-01-01 01:00:00.000000000 +0100
+++ new/sudo-1.9.13p2/plugins/sudoers/regress/testsudoers/test20.out.ok 2023-02-25 19:21:47.000000000 +0100
@@ -0,0 +1,15 @@
+Parses OK
+
+Entries for user root:
+
+ALL = CHROOT=/ /bin/ls
+ host matched
+ runas matched
+ cmnd allowed
+
+ALL = CWD=/ /bin/pwd
+ host matched
+ runas matched
+ cmnd allowed
+
+Command allowed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/plugins/sudoers/regress/testsudoers/test20.sh new/sudo-1.9.13p2/plugins/sudoers/regress/testsudoers/test20.sh
--- old/sudo-1.9.13p1/plugins/sudoers/regress/testsudoers/test20.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/sudo-1.9.13p2/plugins/sudoers/regress/testsudoers/test20.sh 2023-02-25 19:21:47.000000000 +0100
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# Verify CHROOT and CWD support
+# This will catch an unpatched double-free in set_cmnd_path() under ASAN.
+#
+
+: ${TESTSUDOERS=testsudoers}
+
+exec 2>&1
+
+# Exercise double free of user_cmnd in set_cmnd_path() under ASAN.
+# We need more than one rule where the last rule matches and has CHROOT.
+$TESTSUDOERS root /bin/ls <<'EOF'
+root ALL = CWD=/ /bin/pwd
+root ALL = CHROOT=/ /bin/ls
+EOF
+
+exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/plugins/sudoers/testsudoers.c new/sudo-1.9.13p2/plugins/sudoers/testsudoers.c
--- old/sudo-1.9.13p1/plugins/sudoers/testsudoers.c 2023-02-14 17:53:02.000000000 +0100
+++ new/sudo-1.9.13p2/plugins/sudoers/testsudoers.c 2023-02-25 19:21:47.000000000 +0100
@@ -82,6 +82,7 @@
*/
struct sudo_user sudo_user;
struct passwd *list_pw;
+static const char *orig_cmnd;
static char *runas_group, *runas_user;
#if defined(SUDO_DEVEL) && defined(__OpenBSD__)
@@ -203,14 +204,18 @@
if (!dflag)
usage();
user_name = argc ? *argv++ : (char *)"root";
- user_cmnd = user_base = (char *)"true";
+ orig_cmnd = "true";
argc = 0;
} else {
user_name = *argv++;
- user_cmnd = *argv++;
- user_base = sudo_basename(user_cmnd);
+ orig_cmnd = *argv++;
argc -= 2;
}
+ user_cmnd = strdup(orig_cmnd);
+ if (user_cmnd == NULL)
+ sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ user_base = sudo_basename(user_cmnd);
+
if ((sudo_user.pw = sudo_getpwnam(user_name)) == NULL)
sudo_fatalx(U_("unknown user %s"), user_name);
@@ -509,8 +514,13 @@
int
set_cmnd_path(const char *runchroot)
{
- /* Cannot return FOUND without also setting user_cmnd to a new value. */
- return NOT_FOUND;
+ /* Reallocate user_cmnd to catch bugs in command_matches(). */
+ char *new_cmnd = strdup(orig_cmnd);
+ if (new_cmnd == NULL)
+ return NOT_FOUND_ERROR;
+ free(user_cmnd);
+ user_cmnd = new_cmnd;
+ return FOUND;
}
static bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/plugins/sudoers/visudo.c new/sudo-1.9.13p2/plugins/sudoers/visudo.c
--- old/sudo-1.9.13p1/plugins/sudoers/visudo.c 2023-02-14 17:53:06.000000000 +0100
+++ new/sudo-1.9.13p2/plugins/sudoers/visudo.c 2023-02-25 19:21:47.000000000 +0100
@@ -260,7 +260,9 @@
}
/* Mock up a fake sudo_user struct. */
- user_cmnd = user_base = (char *)"";
+ user_cmnd = user_base = strdup("true");
+ if (user_cmnd == NULL)
+ sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
if (geteuid() == 0) {
const char *user = getenv("SUDO_USER");
if (user != NULL && *user != '\0')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sudo-1.9.13p1/src/load_plugins.c new/sudo-1.9.13p2/src/load_plugins.c
--- old/sudo-1.9.13p1/src/load_plugins.c 2023-02-14 17:53:02.000000000 +0100
+++ new/sudo-1.9.13p2/src/load_plugins.c 2023-02-23 17:09:38.000000000 +0100
@@ -55,6 +55,8 @@
errno = ENAMETOOLONG;
goto bad;
}
+ /* Plugin is static, do not fully-qualify. */
+ debug_return_bool(true);
}
#endif /* STATIC_SUDOERS_PLUGIN */
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package pinentry for openSUSE:Factory checked in at 2023-03-01 16:13:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pinentry (Old)
and /work/SRC/openSUSE:Factory/.pinentry.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pinentry"
Wed Mar 1 16:13:33 2023 rev:65 rq:1068056 version:1.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/pinentry/pinentry.changes 2022-08-26 09:07:53.897360483 +0200
+++ /work/SRC/openSUSE:Factory/.pinentry.new.31432/pinentry.changes 2023-03-01 16:13:34.462451583 +0100
@@ -1,0 +2,5 @@
+Mon Feb 27 14:53:16 UTC 2023 - pgajdos(a)suse.com
+
+- add %bcond option to disable fltk backend
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pinentry.spec ++++++
--- /var/tmp/diff_new_pack.b02B8n/_old 2023-03-01 16:13:36.162460375 +0100
+++ /var/tmp/diff_new_pack.b02B8n/_new 2023-03-01 16:13:36.166460395 +0100
@@ -1,7 +1,7 @@
#
# spec file
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -23,6 +23,8 @@
%define nsuffix -%{flavor}
%endif
+%bcond_without fltk
+
Name: pinentry%{?nsuffix}
Version: 1.2.1
Release: 0
@@ -37,7 +39,6 @@
Source2: pinentry.keyring
Source3: pinentry
Patch1: pinentry-0.7.2-gtk+-2.4.diff
-BuildRequires: fltk-devel >= 1.3
BuildRequires: libassuan-devel >= 2.1.0
BuildRequires: libgpg-error-devel >= 1.16
BuildRequires: ncurses-devel
@@ -45,6 +46,9 @@
BuildRequires: update-desktop-files
Provides: pinentry-dialog
%if "%{flavor}" == "gui"
+%if %{with fltk}
+BuildRequires: fltk-devel >= 1.3
+%endif
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Gui)
BuildRequires: pkgconfig(Qt5Widgets)
@@ -112,6 +116,7 @@
A simple PIN or passphrase entry dialog utilize the Assuan protocol
as described by the Aegypten project, using GNOME libraries.
+%if %{with fltk}
%package -n pinentry-fltk
Summary: Collection of Simple PIN or Passphrase Entry Dialogs
Group: Productivity/Other
@@ -123,6 +128,7 @@
%description -n pinentry-fltk
A simple PIN or passphrase entry dialog utilize the Assuan protocol
as described by the Aegypten project, using FLTK libraries.
+%endif
%package -n pinentry-qt5
Summary: Simple PIN or Passphrase Entry Dialog for QT5
@@ -168,7 +174,11 @@
--enable-pinentry-gnome3 \
--enable-pinentry-emacs \
--enable-inside-emacs \
+%if %{with fltk}
--enable-pinentry-fltk \
+%else
+ --disable-pinentry-fltk \
+%endif
--enable-pinentry-efl \
--without-ncurses-include-dir
%make_build
@@ -239,9 +249,11 @@
%license COPYING
%attr(755,root,root) %{_bindir}/pinentry-gnome3
+%if %{with fltk}
%files -n pinentry-fltk
%license COPYING
%attr(755,root,root) %{_bindir}/pinentry-fltk
+%endif
%files -n pinentry-qt5
%license COPYING
1
0