diff --git a/SOURCES/2.27-libblkid-xfs-log.patch b/SOURCES/2.27-libblkid-xfs-log.patch new file mode 100644 index 0000000..190074f --- /dev/null +++ b/SOURCES/2.27-libblkid-xfs-log.patch @@ -0,0 +1,32 @@ +From d5b7d2912afceac3774d1aaea9e8486b54d4e9e9 Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Tue, 13 Oct 2015 12:01:29 +0200 +Subject: [PATCH] libblkid: make XFS Log visible for wipefs + +Reported-by: Peter Rajnoha +Signed-off-by: root +Signed-off-by: Karel Zak +--- + libblkid/src/superblocks/xfs.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/libblkid/src/superblocks/xfs.c b/libblkid/src/superblocks/xfs.c +index a6c04a2..d13c849 100644 +--- a/libblkid/src/superblocks/xfs.c ++++ b/libblkid/src/superblocks/xfs.c +@@ -260,6 +260,12 @@ static int probe_xfs_log(blkid_probe pr, const struct blkid_idmag *mag) + + if (xlog_valid_rec_header(rhead)) { + blkid_probe_set_uuid_as(pr, rhead->h_uuid, "LOGUUID"); ++ ++ if (blkid_probe_set_magic(pr, i * 512, ++ sizeof(rhead->h_magicno), ++ (unsigned char *) &rhead->h_magicno)) ++ return 1; ++ + return 0; + } + } +-- +2.4.3 + diff --git a/SOURCES/2.28-lslogins-1317953.patch b/SOURCES/2.28-lslogins-1317953.patch new file mode 100644 index 0000000..db7589a --- /dev/null +++ b/SOURCES/2.28-lslogins-1317953.patch @@ -0,0 +1,210 @@ +diff -up util-linux-2.23.2/include/pathnames.h.kzak util-linux-2.23.2/include/pathnames.h +--- util-linux-2.23.2/include/pathnames.h.kzak 2016-03-16 17:17:02.980243390 +0100 ++++ util-linux-2.23.2/include/pathnames.h 2016-03-16 17:17:37.129015363 +0100 +@@ -36,6 +36,7 @@ + #endif + #define _PATH_MOTDFILE "/etc/motd" + #define _PATH_NOLOGIN "/etc/nologin" ++#define _PATH_VAR_NOLOGIN "/var/run/nologin" + + #define _PATH_LOGIN "/bin/login" + #define _PATH_INITTAB "/etc/inittab" +diff -up util-linux-2.23.2/login-utils/lslogins.1.kzak util-linux-2.23.2/login-utils/lslogins.1 +--- util-linux-2.23.2/login-utils/lslogins.1.kzak 2016-03-16 17:17:02.970243457 +0100 ++++ util-linux-2.23.2/login-utils/lslogins.1 2016-03-16 17:17:37.129015363 +0100 +@@ -5,7 +5,10 @@ + lslogins \- display information about known users in the system + .SH SYNOPSIS + .B lslogins +-[\fIoptions\fR] [\fB-s\fR|\fB-u\fR[=\fIUID\fR]] [\fB-g \fIgroups\fR] [\fB-l \fIlogins\fR] ++[options] ++.RB [ \-s | \-u [ =\fIUID ]] ++.RB [ \-g " \fIgroups\fR]" ++.RB [ \-l " \fIlogins\fR]" + .SH DESCRIPTION + .PP + Examine the wtmp and btmp logs, /etc/shadow (if necessary) and /etc/passwd +@@ -17,7 +20,7 @@ Mandatory arguments to long options are + .TP + \fB\-a\fR, \fB\-\-acc\-expiration\fR + Display data about the date of last password change and the account expiration +-date (see \fBshadow\fR(5) for more info). (Requires root priviliges.) ++date (see \fBshadow\fR(5) for more info). (Requires root privileges.) + .TP + \fB\-\-btmp\-file \fIpath\fP + Alternate path for btmp. +@@ -31,7 +34,7 @@ Output data in the format of NAME=VALUE. + \fB\-f\fR, \fB\-\-failed\fR + Display data about the users' last failed login attempts. + .TP +-\fB\-G\fR, \fB\-\-groups\-info\fR ++\fB\-G\fR, \fB\-\-supp\-groups\fR + Show information about groups. + .TP + \fB\-g\fR, \fB\-\-groups\fR=\fIgroups\fR +@@ -48,9 +51,6 @@ Display data containing information abou + Only show data of users with a login specified in \fIlogins\fR (user names or user + IDS). More than one login may be specified; the list has to be comma-separated. + .TP +-\fB\-m\fR, \fB\-\-supp\-groups\fR +-Show supplementary groups. +-.TP + \fB\-n\fR, \fB\-\-newline\fR + Display each piece of information on a separate line. + .TP +@@ -71,21 +71,21 @@ Display information related to login by + \fB\-r\fR, \fB\-\-raw\fR + Raw output (no columnation). + .TP +-\fB\-s\fR, \fB\-\-system\-accs\fR[=\fIthreshold\fR] ++\fB\-s\fR, \fB\-\-system\-accs\fR + Show system accounts. These are by default all accounts with a UID below 1000 +-(non-inclusive), with the exception of either nobody or nfsnobody (UID 65534). The UID +-threshold can also be specified explicitly (necessary for some distributions that +-allocate UIDs starting from 100, 500 - or an entirely different value - rather than 1000). ++(non-inclusive), with the exception of either nobody or nfsnobody (UID 65534). ++This hardcoded default maybe overwritten by parameters SYS_UID_MIN and SYS_UID_MAX in ++the file /etc/login.defs. + .TP +-\fB\-\-time-format\fR \fItype\fP ++\fB\-\-time\-format\fR \fItype\fP + Display dates in short, full or iso format. The default is short, this time + format is designed to be space efficient and human readable. + .TP +-\fB\-u\fR, \fB\-\-user\-accs\fR[=\fIthreshold\fR] ++\fB\-u\fR, \fB\-\-user\-accs\fR + Show user accounts. These are by default all accounts with UID above 1000 +-(inclusive), with the exception of either nobody or nfsnobody (UID 65534). The UID +-threshold can also be specified explicitly (necessary for some distributions that +-allocate UIDs starting from 100, 500 - or an entirely different value - rather than 1000). ++(inclusive), with the exception of either nobody or nfsnobody (UID 65534). ++This hardcoded default maybe overwritten by parameters UID_MIN and UID_MAX in ++the file /etc/login.defs. + .TP + \fB\-V\fR, \fB\-\-version\fR + Display version information and exit. +diff -up util-linux-2.23.2/login-utils/lslogins.c.kzak util-linux-2.23.2/login-utils/lslogins.c +--- util-linux-2.23.2/login-utils/lslogins.c.kzak 2016-03-16 17:17:02.970243457 +0100 ++++ util-linux-2.23.2/login-utils/lslogins.c 2016-03-16 17:23:47.191484521 +0100 +@@ -396,7 +396,7 @@ again: + x = snprintf(p, len, "%s,", grp->gr_name); + } + +- if (x < 0 || (size_t) x + 1 > len) { ++ if (x < 0 || (size_t) x >= len) { + size_t cur = p - res; + + maxlen *= 2; +@@ -496,21 +496,24 @@ static int parse_btmp(struct lslogins_co + static int get_sgroups(gid_t **list, size_t *len, struct passwd *pwd) + { + size_t n = 0; ++ int ngroups = 0; + + *len = 0; + *list = NULL; + + /* first let's get a supp. group count */ +- getgrouplist(pwd->pw_name, pwd->pw_gid, *list, (int *) len); +- if (!*len) ++ getgrouplist(pwd->pw_name, pwd->pw_gid, *list, &ngroups); ++ if (!ngroups) + return -1; + +- *list = xcalloc(1, *len * sizeof(gid_t)); ++ *list = xcalloc(1, ngroups * sizeof(gid_t)); + + /* now for the actual list of GIDs */ +- if (-1 == getgrouplist(pwd->pw_name, pwd->pw_gid, *list, (int *) len)) ++ if (-1 == getgrouplist(pwd->pw_name, pwd->pw_gid, *list, &ngroups)) + return -1; + ++ *len = (size_t) ngroups; ++ + /* getgroups also returns the user's primary GID - dispose of it */ + while (n < *len) { + if ((*list)[n] == pwd->pw_gid) +@@ -852,7 +855,7 @@ static int get_user(struct lslogins_cont + const char *username) + { + *user = get_user_info(ctl, username); +- if (!*user && errno) ++ if (!*user) + if (IS_REAL_ERRNO(errno)) + return -1; + return 0; +@@ -1193,16 +1196,18 @@ static void __attribute__((__noreturn__) + fputs(USAGE_HEADER, out); + fprintf(out, _(" %s [options]\n"), program_invocation_short_name); + ++ fputs(USAGE_SEPARATOR, out); ++ fputs(_("Display information about known users in the system.\n"), out); ++ + fputs(USAGE_OPTIONS, out); + fputs(_(" -a, --acc-expiration display info about passwords expiration\n"), out); + fputs(_(" -c, --colon-separate display data in a format similar to /etc/passwd\n"), out); + fputs(_(" -e, --export display in an export-able output format\n"), out); + fputs(_(" -f, --failed display data about the users' last failed logins\n"), out); +- fputs(_(" -G, --groups-info display information about groups\n"), out); ++ fputs(_(" -G, --supp-groups display information about groups\n"), out); + fputs(_(" -g, --groups= display users belonging to a group in \n"), out); + fputs(_(" -L, --last show info about the users' last login sessions\n"), out); + fputs(_(" -l, --logins= display only users from \n"), out); +- fputs(_(" -m, --supp-groups display supplementary groups as well\n"), out); + fputs(_(" -n, --newline display each piece of information on a new line\n"), out); + fputs(_(" --noheadings don't print headings\n"), out); + fputs(_(" --notruncate don't truncate output\n"), out); +@@ -1226,7 +1231,7 @@ static void __attribute__((__noreturn__) + fprintf(out, " %14s %s\n", coldescs[i].name, + _(coldescs[i].help)); + +- fprintf(out, _("\nFor more details see lslogins(1).\n")); ++ fprintf(out, USAGE_MAN_TAIL("lslogins(1)")); + + exit(out == stderr ? EXIT_FAILURE : EXIT_SUCCESS); + } +@@ -1241,8 +1246,7 @@ int main(int argc, char *argv[]) + + /* long only options. */ + enum { +- OPT_VER = CHAR_MAX + 1, +- OPT_WTMP, ++ OPT_WTMP = CHAR_MAX + 1, + OPT_BTMP, + OPT_NOTRUNC, + OPT_NOHEAD, +@@ -1300,7 +1304,7 @@ int main(int argc, char *argv[]) + add_column(columns, ncolumns++, COL_UID); + add_column(columns, ncolumns++, COL_USER); + +- while ((c = getopt_long(argc, argv, "acfGg:hLl:no:prsuVxzZ", ++ while ((c = getopt_long(argc, argv, "acefGg:hLl:no:prsuVzZ", + longopts, NULL)) != -1) { + + err_exclusive_options(c, longopts, excl, excl_st); +@@ -1397,6 +1401,7 @@ int main(int argc, char *argv[]) + { + size_t i; + ++ ctl->time_mode = TIME_INVALID; + for (i = 0; i < ARRAY_SIZE(timefmts); i++) { + if (strcmp(timefmts[i].name, optarg) == 0) { + ctl->time_mode = timefmts[i].val; +@@ -1404,7 +1409,7 @@ int main(int argc, char *argv[]) + } + } + if (ctl->time_mode == TIME_INVALID) +- usage(stderr); ++ errx(EXIT_FAILURE, _("unknown time format: %s"), optarg); + } + break; + case 'V': +@@ -1433,7 +1438,7 @@ int main(int argc, char *argv[]) + logins = argv[optind]; + outmode = OUT_PRETTY; + } else if (argc != optind) +- usage(stderr); ++ errx(EXIT_FAILURE, _("Only one user may be specified. Use -l for multiple users.")); + + scols_init_debug(0); + diff --git a/SPECS/util-linux.spec b/SPECS/util-linux.spec index c90240c..2330593 100644 --- a/SPECS/util-linux.spec +++ b/SPECS/util-linux.spec @@ -2,7 +2,7 @@ Summary: A collection of basic system utilities Name: util-linux Version: 2.23.2 -Release: 26%{?dist} +Release: 26%{?dist}.2 License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain Group: System Environment/Base URL: http://en.wikipedia.org/wiki/Util-linux @@ -198,6 +198,14 @@ Patch56: 2.25-libblkid-return-codes.patch # 1182831 - blkid incorrectly detects boot sec + MBR as FAT Patch57: 2.26-libblkid-fat.patch +# +# RHEL 7.2.Z +# +# 1302332 - [libblkid] Failed to get offset of the xfs_external_log signature +Patch58: 2.27-libblkid-xfs-log.patch +# 1317953 - lslogins crash when executed with buggy username +Patch59: 2.28-lslogins-1317953.patch + %description The util-linux package contains a large variety of low-level system utilities that are necessary for a Linux system to function. Among @@ -916,6 +924,12 @@ fi %{_libdir}/pkgconfig/uuid.pc %changelog +* Wed Mar 16 2016 Karel Zak 2.23.2-26.el7_2.2 +- fix #1317953 - lslogins crash when executed with buggy username + +* Thu Jan 28 2016 Karel Zak 2.23.2-26.el7_2.1 +- fix #1302332 - [libblkid] Failed to get offset of the xfs_external_log signature + * Fri Aug 21 2015 Karel Zak 2.23.2-26 - fix #1182831 - blkid incorrectly detects boot sec + MBR as FAT