fix requirement for liblastlog2 [release 2.40-2mamba;Wed Apr 03 2024]
This commit is contained in:
parent
3c7b1b683c
commit
9a19af60df
@ -1,18 +0,0 @@
|
||||
--- a/login-utils/su.c.badpaths Tue Apr 05 14:26:55 2005
|
||||
+++ b/login-utils/su.c Tue Apr 05 14:40:21 EDT 2005
|
||||
@@ -147,6 +147,15 @@
|
||||
#define DEFAULT_ROOT_LOGIN_PATH "/usr/ucb:/bin:/usr/bin:/etc"
|
||||
#endif
|
||||
|
||||
+/* The default paths which get set are both bogus and oddly influenced
|
||||
+ by <paths.h> and -D on the commands line. Just to be clear, we'll set
|
||||
+ these explicitly. -ewt */
|
||||
+#undef DEFAULT_LOGIN_PATH
|
||||
+#undef DEFAULT_ROOT_LOGIN_PATH
|
||||
+#define DEFAULT_LOGIN_PATH "/bin:/usr/bin:/usr/local/bin"
|
||||
+#define DEFAULT_ROOT_LOGIN_PATH \
|
||||
+ "/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
|
||||
+
|
||||
/* The shell to run if none is given in the user's passwd entry. */
|
||||
#define DEFAULT_SHELL "/bin/sh"
|
||||
|
@ -1,82 +0,0 @@
|
||||
From 73b193f8da0437d1b399903cf0f8e4c827adc03c Mon Sep 17 00:00:00 2001
|
||||
From: Mattias Nissler <mnissler@chromium.org>
|
||||
Date: Thu, 17 Nov 2016 14:47:51 +0100
|
||||
Subject: [PATCH] mount: Add support for "nosymfollow" mount option.
|
||||
|
||||
This adds support for the "nosymfollow" mount option, which indicates
|
||||
that symlinks should not be traversed on the mount this option is
|
||||
applied to. Also update the mount(8) man page with information about
|
||||
this option.
|
||||
|
||||
Signed-off-by: Mattias Nissler <mnissler@chromium.org>
|
||||
Signed-off-by: Ross Zwisler <zwisler@google.com>
|
||||
---
|
||||
libmount/src/context_mount.c | 2 ++
|
||||
libmount/src/libmount.h.in | 3 +++
|
||||
libmount/src/optmap.c | 4 ++++
|
||||
sys-utils/mount.8 | 10 ++++++++++
|
||||
4 files changed, 19 insertions(+)
|
||||
|
||||
diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c
|
||||
index e0ef550b0..8c394c1ff 100644
|
||||
--- a/libmount/src/context_mount.c
|
||||
+++ b/libmount/src/context_mount.c
|
||||
@@ -422,6 +422,8 @@ static int generate_helper_optstr(struct libmnt_context *cxt, char **optstr)
|
||||
mnt_optstr_append_option(optstr, "suid", NULL);
|
||||
if (!(cxt->mountflags & MS_NODEV))
|
||||
mnt_optstr_append_option(optstr, "dev", NULL);
|
||||
+ if (!(cxt->mountflags & MS_NOSYMFOLLOW))
|
||||
+ mnt_optstr_append_option(optstr, "symfollow", NULL);
|
||||
}
|
||||
|
||||
|
||||
diff --git a/libmount/src/libmount.h.in b/libmount/src/libmount.h.in
|
||||
index 321c0540b..e6710ae01 100644
|
||||
--- a/libmount/src/libmount.h.in
|
||||
+++ b/libmount/src/libmount.h.in
|
||||
@@ -941,6 +941,9 @@ extern int mnt_context_set_syscall_status(struct libmnt_context *cxt, int status
|
||||
#ifndef MS_DIRSYNC
|
||||
#define MS_DIRSYNC 128 /* Directory modifications are synchronous */
|
||||
#endif
|
||||
+#ifndef MS_NOSYMFOLLOW
|
||||
+#define MS_NOSYMFOLLOW 256 /* Don't follow symlinks */
|
||||
+#endif
|
||||
#ifndef MS_NOATIME
|
||||
#define MS_NOATIME 0x400 /* 1024: Do not update access times. */
|
||||
#endif
|
||||
diff --git a/libmount/src/optmap.c b/libmount/src/optmap.c
|
||||
index a080d8df6..49e8113d2 100644
|
||||
--- a/libmount/src/optmap.c
|
||||
+++ b/libmount/src/optmap.c
|
||||
@@ -131,6 +131,10 @@ static const struct libmnt_optmap linux_flags_map[] =
|
||||
{ "rslave", MS_SLAVE | MS_REC, MNT_NOHLPS | MNT_NOMTAB },
|
||||
{ "shared", MS_SHARED, MNT_NOHLPS | MNT_NOMTAB }, /* Shared */
|
||||
{ "rshared", MS_SHARED | MS_REC, MNT_NOHLPS | MNT_NOMTAB },
|
||||
+#endif
|
||||
+#ifdef MS_NOSYMFOLLOW
|
||||
+ { "symfollow", MS_NOSYMFOLLOW, MNT_INVERT }, /* Don't follow symlinks */
|
||||
+ { "nosymfollow", MS_NOSYMFOLLOW },
|
||||
#endif
|
||||
{ NULL, 0, 0 }
|
||||
};
|
||||
diff --git a/sys-utils/mount.8 b/sys-utils/mount.8
|
||||
index d633d25a4..d5fa55f43 100644
|
||||
--- a/sys-utils/mount.8
|
||||
+++ b/sys-utils/mount.8
|
||||
@@ -1472,6 +1472,16 @@ specifies the filesystem access mode used for
|
||||
in octal notation. The default mode is 0755. This functionality is supported
|
||||
only for root users or when mount executed without suid permissions. The option
|
||||
is also supported as x-mount.mkdir, this notation is deprecated since v2.30.
|
||||
+.TP
|
||||
+.B nosymfollow
|
||||
+Do not follow symlinks when resolving paths. Symlinks can still be created,
|
||||
+and
|
||||
+.BR readlink (1),
|
||||
+.BR readlink (2),
|
||||
+.BR realpath (1)
|
||||
+and
|
||||
+.BR realpath (3)
|
||||
+all still work properly.
|
||||
|
||||
.SH FILESYSTEM-SPECIFIC MOUNT OPTIONS
|
||||
This section lists options that are specific to particular filesystems.
|
@ -1,82 +0,0 @@
|
||||
From f94a7760ed7ce81389a6059f020238981627a70d Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 25 May 2023 11:48:24 +0200
|
||||
Subject: [PATCH] libmount: don't call hooks after mount.<type> helper
|
||||
|
||||
In case more filesystems are specified (or when libmount follows
|
||||
/{etc,proc}/filesystems) then the library may try to use and
|
||||
initialize the new API because for some filesystems, we need
|
||||
exec(/sbin/mount.<type>) and for another fsopen().
|
||||
|
||||
The hooks that use the API have to smart and detect that the mount
|
||||
operation was done in external /sbin/mount.<type> helper. And in this
|
||||
case, the new API file descriptors must be ignored.
|
||||
|
||||
The exception is propagation flags, mount(8) can set the flags after
|
||||
exec(/sbin/mount.<type>), for example, "mount -t ntfs --make-private".
|
||||
|
||||
Fixes: https://github.com/util-linux/util-linux/issues/2267
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
libmount/src/context_mount.c | 2 ++
|
||||
libmount/src/hook_mount.c | 13 +++++++++++++
|
||||
2 files changed, 15 insertions(+)
|
||||
|
||||
diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c
|
||||
index cbb4f1fdfa..40f9ed0733 100644
|
||||
--- a/libmount/src/context_mount.c
|
||||
+++ b/libmount/src/context_mount.c
|
||||
@@ -508,6 +508,8 @@ static int do_mount(struct libmnt_context *cxt, const char *try_type)
|
||||
assert(cxt->fs);
|
||||
assert((cxt->flags & MNT_FL_MOUNTFLAGS_MERGED));
|
||||
|
||||
+ mnt_context_reset_status(cxt);
|
||||
+
|
||||
if (try_type) {
|
||||
rc = mnt_context_prepare_helper(cxt, "mount", try_type);
|
||||
if (rc)
|
||||
diff --git a/libmount/src/hook_mount.c b/libmount/src/hook_mount.c
|
||||
index 924c714448..91483afa68 100644
|
||||
--- a/libmount/src/hook_mount.c
|
||||
+++ b/libmount/src/hook_mount.c
|
||||
@@ -239,6 +239,10 @@ static int hook_create_mount(struct libmnt_context *cxt,
|
||||
int rc = 0;
|
||||
|
||||
assert(cxt);
|
||||
+
|
||||
+ if (mnt_context_helper_executed(cxt))
|
||||
+ return 0;
|
||||
+
|
||||
assert(cxt->fs);
|
||||
|
||||
api = get_sysapi(cxt);
|
||||
@@ -309,6 +313,9 @@ static int hook_reconfigure_mount(struct libmnt_context *cxt,
|
||||
|
||||
assert(cxt);
|
||||
|
||||
+ if (mnt_context_helper_executed(cxt))
|
||||
+ return 0;
|
||||
+
|
||||
api = get_sysapi(cxt);
|
||||
assert(api);
|
||||
assert(api->fd_tree >= 0);
|
||||
@@ -379,6 +386,9 @@ static int hook_set_vfsflags(struct libmnt_context *cxt,
|
||||
uint64_t set = 0, clr = 0;
|
||||
int rc = 0;
|
||||
|
||||
+ if (mnt_context_helper_executed(cxt))
|
||||
+ return 0;
|
||||
+
|
||||
DBG(HOOK, ul_debugobj(hs, "setting VFS flags"));
|
||||
|
||||
ol = mnt_context_get_optlist(cxt);
|
||||
@@ -471,6 +481,9 @@ static int hook_attach_target(struct libmnt_context *cxt,
|
||||
const char *target;
|
||||
int rc = 0;
|
||||
|
||||
+ if (mnt_context_helper_executed(cxt))
|
||||
+ return 0;
|
||||
+
|
||||
target = mnt_fs_get_target(cxt->fs);
|
||||
if (!target)
|
||||
return -EINVAL;
|
@ -1,50 +0,0 @@
|
||||
diff -pur util-linux-2.12q/hwclock/hwclock.c util-linux-2.12q-fix/hwclock/hwclock.c
|
||||
--- util-linux-2.12q/hwclock/hwclock.c 2004-12-15 20:13:48.000000000 +0100
|
||||
+++ util-linux-2.12q-fix/hwclock/hwclock.c 2005-09-20 10:27:49.000000000 +0200
|
||||
@@ -45,7 +45,7 @@
|
||||
* reading '/etc/clock -au' instead of '/etc/clock -u -s', this error
|
||||
* is automatically corrected at every boot.
|
||||
*
|
||||
- * To do this job, the program reads and writes the file '/etc/adjtime'
|
||||
+ * To do this job, the program reads and writes the file '/var/lib/hwclock/adjtime'
|
||||
* to determine the correction, and to save its data. In this file are
|
||||
* three numbers:
|
||||
*
|
||||
@@ -58,13 +58,13 @@
|
||||
*
|
||||
* Installation and use of this program:
|
||||
*
|
||||
- * a) create a file '/etc/adjtime' containing as the first and only line:
|
||||
+ * a) create a file '/var/lib/hwclock/adjtime' containing as the first and only line:
|
||||
* '0.0 0 0.0'
|
||||
* b) run 'clock -au' or 'clock -a', depending on whether your cmos is in
|
||||
* universal or local time. This updates the second number.
|
||||
* c) set your system time using the 'date' command.
|
||||
* d) update your cmos time using 'clock -wu' or 'clock -w'
|
||||
- * e) replace the first number in /etc/adjtime by your correction.
|
||||
+ * e) replace the first number in /var/lib/hwclock/adjtime by your correction.
|
||||
* f) put the command 'clock -au' or 'clock -a' in your '/etc/rc.local'
|
||||
*/
|
||||
|
||||
@@ -96,7 +96,7 @@ struct clock_ops *ur;
|
||||
#define FLOOR(arg) ((arg >= 0 ? (int) arg : ((int) arg) - 1));
|
||||
|
||||
/* Here the information for time adjustments is kept. */
|
||||
-#define ADJPATH "/etc/adjtime"
|
||||
+#define ADJPATH "/var/lib/hwclock/adjtime"
|
||||
|
||||
/* Store the date here when "badyear" flag is set. */
|
||||
#define LASTDATE "/var/lib/lastdate"
|
||||
@@ -231,10 +231,10 @@ hw_clock_is_utc(const bool utc, const bo
|
||||
static int
|
||||
read_adjtime(struct adjtime *adjtime_p) {
|
||||
/*----------------------------------------------------------------------------
|
||||
- Read the adjustment parameters out of the /etc/adjtime file.
|
||||
+ Read the adjustment parameters out of the /var/lib/hwclock/adjtime file.
|
||||
|
||||
Return them as the adjtime structure <*adjtime_p>.
|
||||
- If there is no /etc/adjtime file, return defaults.
|
||||
+ If there is no /var/lib/hwclock/adjtime file, return defaults.
|
||||
If values are missing from the file, return defaults for them.
|
||||
|
||||
return value 0 if all OK, !=0 otherwise.
|
@ -1,12 +0,0 @@
|
||||
diff -Nru util-linux-ng-2.15/libs/blkid/src/probers/reiserfs.c util-linux-ng-2.15.patched/libs/blkid/src/probers/reiserfs.c
|
||||
--- util-linux-ng-2.15/libs/blkid/src/probers/reiserfs.c 2009-03-25 13:20:17.000000000 +0100
|
||||
+++ util-linux-ng-2.15.patched/libs/blkid/src/probers/reiserfs.c 2009-05-20 02:42:54.000000000 +0200
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
const struct blkid_idinfo reiser_idinfo =
|
||||
{
|
||||
- .name = "reiser",
|
||||
+ .name = "reiserfs",
|
||||
.usage = BLKID_USAGE_FILESYSTEM,
|
||||
.probefunc = probe_reiser,
|
||||
.magics =
|
100
util-linux.spec
100
util-linux.spec
@ -1,14 +1,11 @@
|
||||
%define majorminor %(echo %version | cut -d. -f 1-2)
|
||||
|
||||
# '/bin/raw' is deprecated (applications needing raw device access
|
||||
# should open regular block devices with O_DIRECT)
|
||||
%define build_raw 1
|
||||
%define uuidd_groupid 65052
|
||||
%define uuidd_userid 65052
|
||||
|
||||
Name: util-linux
|
||||
Version: 2.39.3
|
||||
Release: 1mamba
|
||||
Version: 2.40
|
||||
Release: 2mamba
|
||||
Epoch: 1
|
||||
Summary: Miscellaneous utilities for Linux
|
||||
Group: System/Tools
|
||||
@ -30,12 +27,7 @@ Source10: util-linux-pam-runuser-l
|
||||
Source11: util-linux-pam-remote
|
||||
Source12: util-linux-pam-chfn
|
||||
Source13: util-linux-pam-chsh
|
||||
Patch0: %{name}-ng-2.12q-adjtime_path.patch
|
||||
Patch1: %{name}-ng-2.15-reiserfs_fix_name.patch
|
||||
Patch2: util-linux-2.22-su_paths.patch
|
||||
Patch3: util-linux-2.34-blkid-pkgconfig-add-uuid.patch
|
||||
Patch4: util-linux-2.36.1-revert-add-nosymfollow.patch
|
||||
Patch5: util-linux-2.39-upstream-libmount_dont_call_hooks_after_mount.patch
|
||||
License: GPL
|
||||
## AUTOBUILDREQ-BEGIN
|
||||
BuildRequires: glibc-devel
|
||||
@ -46,6 +38,7 @@ BuildRequires: libpam-devel
|
||||
BuildRequires: libpython311-devel
|
||||
BuildRequires: libreadline-devel
|
||||
BuildRequires: libselinux-devel
|
||||
BuildRequires: libsqlite-devel
|
||||
BuildRequires: libsystemd-devel
|
||||
BuildRequires: libudev-devel
|
||||
BuildRequires: libxcrypt-devel
|
||||
@ -70,6 +63,7 @@ Provides: eject
|
||||
Obsoletes: eject < 1:2.37
|
||||
Provides: schedutils
|
||||
Obsoletes: schedutils < 1:2.37
|
||||
#Requires: liblastlog2 = %{?epoch:%epoch:}%{version}-%{release}
|
||||
Requires: libuuid = %{?epoch:%epoch:}%{version}-%{release}
|
||||
Requires: libblkid = %{?epoch:%epoch:}%{version}-%{release}
|
||||
Requires: libmount = %{?epoch:%epoch:}%{version}-%{release}
|
||||
@ -151,6 +145,22 @@ Requires: libuuid = %{?epoch:%epoch:}%{version}-%{release}
|
||||
Universal unique id library.
|
||||
This package provides the development file for application which use libuuid.
|
||||
|
||||
%package -n liblastlog2
|
||||
Summary: Last log library
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n liblastlog2
|
||||
Last log library.
|
||||
|
||||
%package -n liblastlog2-devel
|
||||
Summary: The development file for application which use liblastlog2
|
||||
Group: Development/Libraries
|
||||
Requires: liblastlog2 = %{?epoch:%epoch:}%{version}-%{release}
|
||||
|
||||
%description -n liblastlog2-devel
|
||||
Last log library.
|
||||
This package provides the development file for application which use libuuid.
|
||||
|
||||
%package -n libmount
|
||||
Summary: Mount library
|
||||
Group: System/Libraries
|
||||
@ -202,6 +212,7 @@ Requires: libmount = %{?epoch:%epoch:}%{version}-%{release}
|
||||
%description -n python-libmount
|
||||
Python binding to libmount.
|
||||
|
||||
|
||||
%debug_package
|
||||
|
||||
%prep
|
||||
@ -209,10 +220,6 @@ Python binding to libmount.
|
||||
#-D -T
|
||||
#:<< _EOF
|
||||
%patch 3 -p1
|
||||
#%patch4 -p1 -R
|
||||
#%patch 5 -p1 -b .upstream-libmount_dont_call_hooks_after_mount
|
||||
|
||||
#cp %{S:1} nologin.c
|
||||
|
||||
%build
|
||||
#:<< _EOF
|
||||
@ -234,44 +241,12 @@ Python binding to libmount.
|
||||
--with-ncursesw \
|
||||
PYTHON=%{__python3}
|
||||
|
||||
# --disable-login-utils \
|
||||
# --libdir=/%{_lib} \
|
||||
|
||||
%make CC="%{_target_platform}-gcc -std=gnu99" READLINE_LIBS="-lreadline -lncurses"
|
||||
|
||||
## build nologin
|
||||
#%{_target_platform}-gcc %{optflags} -o nologin nologin.c
|
||||
|
||||
%install
|
||||
[ "%{buildroot}" != / ] && rm -rf %{buildroot}
|
||||
#install -d %{buildroot}/var/lib/hwclock
|
||||
%makeinstall
|
||||
|
||||
# note: versions <=2.12 use path "%{_datadir}/misc/getopt/*"
|
||||
#install -d %{buildroot}%{_datadir}/misc/getopt/
|
||||
#mv %{buildroot}%{_datadir}/getopt/* \
|
||||
# %{buildroot}%{_datadir}/misc/getopt/
|
||||
|
||||
## note: do not install tcsh scripts to avoid dependencies on tcsh
|
||||
#rm %{buildroot}%{_datadir}/misc/getopt/getopt-parse.tcsh
|
||||
|
||||
## fix some wrong paths
|
||||
#install -d %{buildroot}/sbin
|
||||
#for f in addpart delpart partx; do
|
||||
# mv %{buildroot}%{_sbindir}/$f %{buildroot}/sbin/$f
|
||||
#done
|
||||
#install -d %{buildroot}/bin
|
||||
#%if %{build_raw}
|
||||
##mv %{buildroot}/sbin/raw %{buildroot}/bin/raw
|
||||
#install -D -m644 %{S:3} %{buildroot}%{_sysconfdir}/udev/rules.d/60-raw.rules
|
||||
#echo '.so man8/raw.8' > %{buildroot}%{_mandir}/man8/rawdevices.8
|
||||
#%endif
|
||||
#mv %{buildroot}%{_bindir}/taskset %{buildroot}/bin/taskset
|
||||
|
||||
## install nologin
|
||||
#install -D -m 755 nologin %{buildroot}%{_sbindir}/nologin
|
||||
#install -D -m 644 %{S:2} %{buildroot}%{_mandir}/man8/nologin.8
|
||||
|
||||
rm -f %{buildroot}%{_mandir}/*/man*/{kill,newgrp,vigr,vipw}.*
|
||||
|
||||
%find_lang %{name} --with-man --all-name
|
||||
@ -346,15 +321,15 @@ exit 0
|
||||
%config %{_sysconfdir}/login.defs
|
||||
%{_bindir}/*
|
||||
%{_sbindir}/*
|
||||
#%if %{build_raw}
|
||||
#%config(noreplace) %{_sysconfdir}/udev/rules.d/60-raw.rules
|
||||
#%endif
|
||||
%attr(4755,root,root) %{_bindir}/mount
|
||||
%attr(4755,root,root) %{_bindir}/umount
|
||||
%{_unitdir}/lastlog2-import.service
|
||||
%{_unitdir}/uuidd.service
|
||||
%{_unitdir}/uuidd.socket
|
||||
%{_unitdir}/fstrim.service
|
||||
%{_unitdir}/fstrim.timer
|
||||
%{_tmpfilesdir}/lastlog2-tmpfiles.conf
|
||||
%{_tmpfilesdir}/uuidd-tmpfiles.conf
|
||||
%{_datadir}/bash-completion/completions/*
|
||||
%dir %{_localstatedir}/uuid
|
||||
%dir %{_localstatedir}/lib/libuuid
|
||||
@ -363,10 +338,8 @@ exit 0
|
||||
%{_mandir}/man5/adjtime_config.5*
|
||||
%{_mandir}/man5/fstab.*
|
||||
%{_mandir}/man5/terminal-colors.d.5*
|
||||
%{_mandir}/man5/scols-filter.5*
|
||||
%{_mandir}/man8/*
|
||||
#%{_infodir}/ipc.info.*
|
||||
#%lang(ru) %{_mandir}/ru/man1/ddate.*
|
||||
#%dir /var/lib/hwclock
|
||||
%dir %{_docdir}/util-linux
|
||||
%{_docdir}/util-linux/getopt-example.bash
|
||||
%{_docdir}/util-linux/getopt-example.tcsh
|
||||
@ -430,7 +403,7 @@ exit 0
|
||||
|
||||
%files -n libfdisk
|
||||
%defattr(-,root,root)
|
||||
/%{_libdir}/libfdisk.so.*
|
||||
%{_libdir}/libfdisk.so.*
|
||||
|
||||
%files -n libfdisk-devel
|
||||
%defattr(-,root,root)
|
||||
@ -440,7 +413,28 @@ exit 0
|
||||
%{_libdir}/libfdisk.so
|
||||
%{_libdir}/pkgconfig/fdisk.pc
|
||||
|
||||
%files -n liblastlog2
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/liblastlog2.so.*
|
||||
%{_pam_moduledir}/pam_lastlog2.so
|
||||
|
||||
%files -n liblastlog2-devel
|
||||
%defattr(-,root,root)
|
||||
%dir %{_includedir}/liblastlog2
|
||||
%{_includedir}/liblastlog2/lastlog2.h
|
||||
%{_libdir}/liblastlog2.a
|
||||
%{_libdir}/liblastlog2.so
|
||||
%{_mandir}/man3/lastlog2.3*
|
||||
%{_mandir}/man3/ll2_*.3*
|
||||
%{_libdir}/pkgconfig/lastlog2.pc
|
||||
|
||||
%changelog
|
||||
* Wed Apr 03 2024 Silvan Calarco <silvan.calarco@mambasoft.it> 2.40-2mamba
|
||||
- fix requirement for liblastlog2
|
||||
|
||||
* Fri Mar 29 2024 Automatic Build System <autodist@openmamba.org> 2.40-1mamba
|
||||
- automatic version update by autodist
|
||||
|
||||
* Tue Dec 05 2023 Automatic Build System <autodist@mambasoft.it> 2.39.3-1mamba
|
||||
- automatic version update by autodist
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user