2.24-1: upgrade, #1022217, nologin
This commit is contained in:
parent
636ae6f91d
commit
3c3df501f7
1
.gitignore
vendored
1
.gitignore
vendored
@ -28,3 +28,4 @@
|
|||||||
/util-linux-2.23.1.tar.xz
|
/util-linux-2.23.1.tar.xz
|
||||||
/util-linux-2.23.2.tar.xz
|
/util-linux-2.23.2.tar.xz
|
||||||
/util-linux-2.24-rc1.tar.xz
|
/util-linux-2.24-rc1.tar.xz
|
||||||
|
/util-linux-2.24.tar.xz
|
||||||
|
122
2.25-libfdisk-gpt-recovery.patch
Normal file
122
2.25-libfdisk-gpt-recovery.patch
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
diff -up util-linux-2.24/libfdisk/src/gpt.c.kzak util-linux-2.24/libfdisk/src/gpt.c
|
||||||
|
--- util-linux-2.24/libfdisk/src/gpt.c.kzak 2013-10-21 13:03:38.782957983 +0200
|
||||||
|
+++ util-linux-2.24/libfdisk/src/gpt.c 2013-10-23 12:16:01.062783977 +0200
|
||||||
|
@@ -410,6 +410,46 @@ static int gpt_mknew_header_from_bkp(str
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static struct gpt_header *gpt_copy_header(struct fdisk_context *cxt,
|
||||||
|
+ struct gpt_header *src)
|
||||||
|
+{
|
||||||
|
+ struct gpt_header *res;
|
||||||
|
+
|
||||||
|
+ if (!cxt || !src)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ res = calloc(1, sizeof(*res));
|
||||||
|
+ if (!res) {
|
||||||
|
+ fdisk_warn(cxt, _("failed to allocate GPT header"));
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ res->my_lba = src->alternative_lba;
|
||||||
|
+ res->alternative_lba = src->my_lba;
|
||||||
|
+
|
||||||
|
+ res->signature = src->signature;
|
||||||
|
+ res->revision = src->revision;
|
||||||
|
+ res->size = src->size;
|
||||||
|
+ res->npartition_entries = src->npartition_entries;
|
||||||
|
+ res->sizeof_partition_entry = src->sizeof_partition_entry;
|
||||||
|
+ res->first_usable_lba = src->first_usable_lba;
|
||||||
|
+ res->last_usable_lba = src->last_usable_lba;
|
||||||
|
+
|
||||||
|
+ memcpy(&res->disk_guid, &src->disk_guid, sizeof(src->disk_guid));
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ if (res->my_lba == GPT_PRIMARY_PARTITION_TABLE_LBA)
|
||||||
|
+ res->partition_entry_lba = cpu_to_le64(2);
|
||||||
|
+ else {
|
||||||
|
+ uint64_t esz = le32_to_cpu(src->npartition_entries) * sizeof(struct gpt_entry);
|
||||||
|
+ uint64_t esects = (esz + cxt->sector_size - 1) / cxt->sector_size;
|
||||||
|
+
|
||||||
|
+ res->partition_entry_lba = cpu_to_le64(cxt->total_sectors - 1 - esects);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return res;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Builds a clean new GPT header (currently under revision 1.0).
|
||||||
|
*
|
||||||
|
@@ -776,10 +816,13 @@ static struct gpt_header *gpt_read_heade
|
||||||
|
else
|
||||||
|
free(ents);
|
||||||
|
|
||||||
|
+ DBG(LABEL, dbgprint("found valid GPT Header on LBA %ju", lba));
|
||||||
|
return header;
|
||||||
|
invalid:
|
||||||
|
free(header);
|
||||||
|
free(ents);
|
||||||
|
+
|
||||||
|
+ DBG(LABEL, dbgprint("read GPT Header on LBA %ju failed", lba));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1091,6 +1134,8 @@ static int gpt_probe_label(struct fdisk_
|
||||||
|
|
||||||
|
gpt = self_label(cxt);
|
||||||
|
|
||||||
|
+ /* TODO: it would be nice to support scenario when GPT headers are OK,
|
||||||
|
+ * but PMBR is corrupt */
|
||||||
|
mbr_type = valid_pmbr(cxt);
|
||||||
|
if (!mbr_type)
|
||||||
|
goto failed;
|
||||||
|
@@ -1102,20 +1147,36 @@ static int gpt_probe_label(struct fdisk_
|
||||||
|
gpt->pheader = gpt_read_header(cxt, GPT_PRIMARY_PARTITION_TABLE_LBA,
|
||||||
|
&gpt->ents);
|
||||||
|
|
||||||
|
- /*
|
||||||
|
- * TODO: If the primary GPT is corrupt, we must check the last LBA of the
|
||||||
|
- * device to see if it has a valid GPT Header and point to a valid GPT
|
||||||
|
- * Partition Entry Array.
|
||||||
|
- * If it points to a valid GPT Partition Entry Array, then software should
|
||||||
|
- * restore the primary GPT if allowed by platform policy settings.
|
||||||
|
- *
|
||||||
|
- * For now we just abort GPT probing!
|
||||||
|
- */
|
||||||
|
- if (!gpt->pheader || !gpt->ents)
|
||||||
|
+ if (gpt->pheader)
|
||||||
|
+ /* primary OK, try backup from alternative LBA */
|
||||||
|
+ gpt->bheader = gpt_read_header(cxt,
|
||||||
|
+ le64_to_cpu(gpt->pheader->alternative_lba),
|
||||||
|
+ NULL);
|
||||||
|
+ else
|
||||||
|
+ /* primary corrupted -- try last LBA */
|
||||||
|
+ gpt->bheader = gpt_read_header(cxt, last_lba(cxt), &gpt->ents);
|
||||||
|
+
|
||||||
|
+ if (!gpt->pheader && !gpt->bheader)
|
||||||
|
goto failed;
|
||||||
|
|
||||||
|
- /* OK, probing passed, now initialize backup header and fdisk variables. */
|
||||||
|
- gpt->bheader = gpt_read_header(cxt, last_lba(cxt), NULL);
|
||||||
|
+ /* primary OK, backup corrupted -- recovery */
|
||||||
|
+ if (gpt->pheader && !gpt->bheader) {
|
||||||
|
+ fdisk_warnx(cxt, _("The backup GPT table is corrupt, but the "
|
||||||
|
+ "primary appears OK, so that will be used."));
|
||||||
|
+ gpt->bheader = gpt_copy_header(cxt, gpt->pheader);
|
||||||
|
+ if (!gpt->bheader)
|
||||||
|
+ goto failed;
|
||||||
|
+ gpt_recompute_crc(gpt->bheader, gpt->ents);
|
||||||
|
+
|
||||||
|
+ /* primary corrupted, backup OK -- recovery */
|
||||||
|
+ } else if (!gpt->pheader && gpt->bheader) {
|
||||||
|
+ fdisk_warnx(cxt, _("The primary GPT table is corrupt, but the "
|
||||||
|
+ "backup appears OK, so that will be used."));
|
||||||
|
+ gpt->pheader = gpt_copy_header(cxt, gpt->bheader);
|
||||||
|
+ if (!gpt->pheader)
|
||||||
|
+ goto failed;
|
||||||
|
+ gpt_recompute_crc(gpt->pheader, gpt->ents);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
cxt->label->nparts_max = le32_to_cpu(gpt->pheader->npartition_entries);
|
||||||
|
cxt->label->nparts_cur = partitions_in_use(gpt->pheader, gpt->ents);
|
63
nologin.8
63
nologin.8
@ -1,63 +0,0 @@
|
|||||||
.\" $OpenBSD: nologin.8,v 1.8 1999/06/04 02:45:19 aaron Exp $
|
|
||||||
.\" $NetBSD: nologin.8,v 1.3 1995/03/18 14:59:09 cgd Exp $
|
|
||||||
.\"
|
|
||||||
.\" Copyright (c) 1993
|
|
||||||
.\" The Regents of the University of California. All rights reserved.
|
|
||||||
.\"
|
|
||||||
.\" Redistribution and use in source and binary forms, with or without
|
|
||||||
.\" modification, are permitted provided that the following conditions
|
|
||||||
.\" are met:
|
|
||||||
.\" 1. Redistributions of source code must retain the above copyright
|
|
||||||
.\" notice, this list of conditions and the following disclaimer.
|
|
||||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
.\" notice, this list of conditions and the following disclaimer in the
|
|
||||||
.\" documentation and/or other materials provided with the distribution.
|
|
||||||
.\" 3. All advertising materials mentioning features or use of this software
|
|
||||||
.\" must display the following acknowledgement:
|
|
||||||
.\" This product includes software developed by the University of
|
|
||||||
.\" California, Berkeley and its contributors.
|
|
||||||
.\" 4. Neither the name of the University nor the names of its contributors
|
|
||||||
.\" may be used to endorse or promote products derived from this software
|
|
||||||
.\" without specific prior written permission.
|
|
||||||
.\"
|
|
||||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
||||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
.\" SUCH DAMAGE.
|
|
||||||
.\"
|
|
||||||
.\" @(#)nologin.8 8.1 (Berkeley) 6/19/93
|
|
||||||
.\"
|
|
||||||
.Dd February 15, 1997
|
|
||||||
.Dt NOLOGIN 8
|
|
||||||
.Os
|
|
||||||
.Sh NAME
|
|
||||||
.Nm nologin
|
|
||||||
.Nd politely refuse a login
|
|
||||||
.Sh SYNOPSIS
|
|
||||||
.Nm nologin
|
|
||||||
.Sh DESCRIPTION
|
|
||||||
.Nm
|
|
||||||
displays a message that an account is not available and
|
|
||||||
exits non-zero.
|
|
||||||
It is intended as a replacement shell field for accounts that
|
|
||||||
have been disabled.
|
|
||||||
.Pp
|
|
||||||
If the file
|
|
||||||
.Pa /etc/nologin.txt
|
|
||||||
exists,
|
|
||||||
.Nm
|
|
||||||
displays its contents to the user instead of the default message.
|
|
||||||
.Sh SEE ALSO
|
|
||||||
.Xr login 1
|
|
||||||
.Sh HISTORY
|
|
||||||
The
|
|
||||||
.Nm
|
|
||||||
command appeared in
|
|
||||||
.Bx 4.4 .
|
|
58
nologin.c
58
nologin.c
@ -1,58 +0,0 @@
|
|||||||
/* $OpenBSD: nologin.c,v 1.2 1997/04/04 16:51:37 millert Exp $ */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 1997, Jason Downs. All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS
|
|
||||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
|
|
||||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
/* Distinctly different from _PATH_NOLOGIN. */
|
|
||||||
#define _PATH_NOLOGIN_TXT "/etc/nologin.txt"
|
|
||||||
|
|
||||||
#define DEFAULT_MESG "This account is currently not available.\n"
|
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
int main(argc, argv)
|
|
||||||
int argc;
|
|
||||||
char *argv[];
|
|
||||||
{
|
|
||||||
int nfd, nrd;
|
|
||||||
char nbuf[128];
|
|
||||||
|
|
||||||
nfd = open(_PATH_NOLOGIN_TXT, O_RDONLY);
|
|
||||||
if (nfd < 0) {
|
|
||||||
write(STDOUT_FILENO, DEFAULT_MESG, strlen(DEFAULT_MESG));
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((nrd = read(nfd, nbuf, sizeof(nbuf))) > 0)
|
|
||||||
write(STDOUT_FILENO, nbuf, nrd);
|
|
||||||
close (nfd);
|
|
||||||
|
|
||||||
exit (1);
|
|
||||||
}
|
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
cd484c6c03d8c1242cc1eae9ea1f040e util-linux-2.24-rc1.tar.xz
|
4fac6443427f575fc5f3531a4ad2ca01 util-linux-2.24.tar.xz
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
Summary: A collection of basic system utilities
|
Summary: A collection of basic system utilities
|
||||||
Name: util-linux
|
Name: util-linux
|
||||||
Version: 2.24
|
Version: 2.24
|
||||||
Release: 0.1%{?dist}
|
Release: 1%{?dist}
|
||||||
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
|
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
URL: http://en.wikipedia.org/wiki/Util-linux
|
URL: http://en.wikipedia.org/wiki/Util-linux
|
||||||
|
|
||||||
%define upstream_version %{version}-rc1
|
%define upstream_version %{version}
|
||||||
|
|
||||||
### Macros
|
### Macros
|
||||||
%define cytune_archs %{ix86} alpha %{arm}
|
%define cytune_archs %{ix86} alpha %{arm}
|
||||||
@ -33,8 +33,6 @@ Source1: util-linux-login.pamd
|
|||||||
Source2: util-linux-remote.pamd
|
Source2: util-linux-remote.pamd
|
||||||
Source3: util-linux-chsh-chfn.pamd
|
Source3: util-linux-chsh-chfn.pamd
|
||||||
Source4: util-linux-60-raw.rules
|
Source4: util-linux-60-raw.rules
|
||||||
Source8: nologin.c
|
|
||||||
Source9: nologin.8
|
|
||||||
Source12: util-linux-su.pamd
|
Source12: util-linux-su.pamd
|
||||||
Source13: util-linux-su-l.pamd
|
Source13: util-linux-su-l.pamd
|
||||||
Source14: util-linux-runuser.pamd
|
Source14: util-linux-runuser.pamd
|
||||||
@ -79,6 +77,9 @@ Requires: libmount = %{version}-%{release}
|
|||||||
# 151635 - makeing /var/log/lastlog
|
# 151635 - makeing /var/log/lastlog
|
||||||
Patch0: 2.23-login-lastlog-create.patch
|
Patch0: 2.23-login-lastlog-create.patch
|
||||||
|
|
||||||
|
# backport from v2.25: 1022217 - fdisk mishandles GPT corruption
|
||||||
|
Patch1: 2.25-libfdisk-gpt-recovery.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The util-linux package contains a large variety of low-level system
|
The util-linux package contains a large variety of low-level system
|
||||||
utilities that are necessary for a Linux system to function. Among
|
utilities that are necessary for a Linux system to function. Among
|
||||||
@ -203,7 +204,6 @@ mountinfo, etc) and mount filesystems.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-%{upstream_version}
|
%setup -q -n %{name}-%{upstream_version}
|
||||||
cp %{SOURCE8} %{SOURCE9} .
|
|
||||||
|
|
||||||
for p in %{patches}; do
|
for p in %{patches}; do
|
||||||
%{__patch} -p1 -F%{_default_patch_fuzz} -i "$p"
|
%{__patch} -p1 -F%{_default_patch_fuzz} -i "$p"
|
||||||
@ -241,10 +241,6 @@ export SUID_LDFLAGS="-pie -Wl,-z,relro -Wl,-z,now"
|
|||||||
# build util-linux
|
# build util-linux
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
# build nologin
|
|
||||||
gcc $CFLAGS -o nologin nologin.c
|
|
||||||
|
|
||||||
|
|
||||||
%check
|
%check
|
||||||
#to run tests use "--with check"
|
#to run tests use "--with check"
|
||||||
%if %{?_with_check:1}%{!?_with_check:0}
|
%if %{?_with_check:1}%{!?_with_check:0}
|
||||||
@ -265,10 +261,6 @@ chmod 0644 ${RPM_BUILD_ROOT}/var/log/lastlog
|
|||||||
# install util-linux
|
# install util-linux
|
||||||
make install DESTDIR=${RPM_BUILD_ROOT}
|
make install DESTDIR=${RPM_BUILD_ROOT}
|
||||||
|
|
||||||
# install nologin
|
|
||||||
install -m 755 nologin ${RPM_BUILD_ROOT}%{_sbindir}
|
|
||||||
install -m 644 nologin.8 ${RPM_BUILD_ROOT}%{_mandir}/man8
|
|
||||||
|
|
||||||
# raw
|
# raw
|
||||||
echo '.so man8/raw.8' > $RPM_BUILD_ROOT%{_mandir}/man8/rawdevices.8
|
echo '.so man8/raw.8' > $RPM_BUILD_ROOT%{_mandir}/man8/rawdevices.8
|
||||||
{
|
{
|
||||||
@ -339,14 +331,13 @@ for I in /sbin/sfdisk \
|
|||||||
done
|
done
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# we install getopt-*.{bash,tcsh} as doc files
|
# we install getopt-*.{bash,tcsh} by %doc directive
|
||||||
chmod 644 misc-utils/getopt-*.{bash,tcsh}
|
chmod 644 misc-utils/getopt-*.{bash,tcsh}
|
||||||
rm -f ${RPM_BUILD_ROOT}%{_datadir}/getopt/*
|
rm -f ${RPM_BUILD_ROOT}%{_datadir}/doc/util-linux/getopt/*
|
||||||
rmdir ${RPM_BUILD_ROOT}%{_datadir}/getopt
|
rmdir ${RPM_BUILD_ROOT}%{_datadir}/doc/util-linux/getopt
|
||||||
|
|
||||||
ln -sf /proc/mounts %{buildroot}/etc/mtab
|
ln -sf /proc/mounts %{buildroot}/etc/mtab
|
||||||
|
|
||||||
|
|
||||||
# remove static libs
|
# remove static libs
|
||||||
rm -f $RPM_BUILD_ROOT%{_libdir}/lib{uuid,blkid,mount}.a
|
rm -f $RPM_BUILD_ROOT%{_libdir}/lib{uuid,blkid,mount}.a
|
||||||
|
|
||||||
@ -823,6 +814,11 @@ fi
|
|||||||
%{_libdir}/python*/site-packages/libmount/*
|
%{_libdir}/python*/site-packages/libmount/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Oct 23 2013 Karel Zak <kzak@redhat.com> 2.24-1
|
||||||
|
- upgrade to upstream release v2.24
|
||||||
|
- remove nologin (merged upstream)
|
||||||
|
- fix #1022217 - fdisk mishandles GPT corruption
|
||||||
|
|
||||||
* Fri Sep 27 2013 Karel Zak <kzak@redhat.com> 2.24-0.1
|
* Fri Sep 27 2013 Karel Zak <kzak@redhat.com> 2.24-0.1
|
||||||
- upgrade to upstream release v2.24-rc1
|
- upgrade to upstream release v2.24-rc1
|
||||||
- add python3 libmount binding
|
- add python3 libmount binding
|
||||||
|
Loading…
Reference in New Issue
Block a user