diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1a74594 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/quota-4.04.tar.gz diff --git a/.quota.metadata b/.quota.metadata new file mode 100644 index 0000000..470ffcd --- /dev/null +++ b/.quota.metadata @@ -0,0 +1 @@ +38e6cc7538d504891a8454bbdabef058bd1adc11 SOURCES/quota-4.04.tar.gz diff --git a/SOURCES/quota-4.03-Validate-upper-bound-of-RPC-port.patch b/SOURCES/quota-4.03-Validate-upper-bound-of-RPC-port.patch new file mode 100644 index 0000000..aa0d12b --- /dev/null +++ b/SOURCES/quota-4.03-Validate-upper-bound-of-RPC-port.patch @@ -0,0 +1,29 @@ +From c9a2a6fea0668579f5fb8d77cb219f51d104581f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Wed, 6 Jan 2016 17:58:22 +0100 +Subject: [PATCH] Validate upper bound of RPC port +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + rquota_svc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rquota_svc.c b/rquota_svc.c +index 338b70f..93472e0 100644 +--- a/rquota_svc.c ++++ b/rquota_svc.c +@@ -142,7 +142,7 @@ static void parse_options(int argc, char **argv) + break; + case 'p': + port = strtol(optarg, &endptr, 0); +- if (*endptr || port <= 0) { ++ if (*endptr || port <= 0 || port > 0xffff) { + errstr(_("Illegal port number: %s\n"), optarg); + show_help(); + exit(1); +-- +2.5.0 + diff --git a/SOURCES/quota-4.04-Add-TIRPC_CFLAGS-globally-to-CFLAGS-for-RPC-support-.patch b/SOURCES/quota-4.04-Add-TIRPC_CFLAGS-globally-to-CFLAGS-for-RPC-support-.patch new file mode 100644 index 0000000..5f63cde --- /dev/null +++ b/SOURCES/quota-4.04-Add-TIRPC_CFLAGS-globally-to-CFLAGS-for-RPC-support-.patch @@ -0,0 +1,43 @@ +From bbb8819fc0f6ed379a05d635a61bcf9c8986079f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= +Date: Sat, 16 Sep 2017 13:09:43 +0200 +Subject: [PATCH] Add $(TIRPC_CFLAGS) globally to CFLAGS for RPC support, + needed for libc 2.26 + +--- + Makefile.am | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 8d80bee..278290a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -51,6 +51,8 @@ EXTRA_DIST = \ + noinst_LIBRARIES = libquota.a + + if WITH_RPC ++CFLAGS += $(TIRPC_CFLAGS) ++ + rpcsvcdir = $(includedir)/rpcsvc + rpcsvc_DATA = \ + rquota.h \ +@@ -100,8 +102,6 @@ libquota_a_SOURCES = \ + mntopt.h \ + pot.c \ + pot.h +-libquota_a_CFLAGS = \ +- $(TIRPC_CFLAGS) + libquota_a_LIBADD = \ + $(RPCLIBS) + +@@ -235,7 +235,6 @@ rpc_rquotad_SOURCES = \ + rquota_server.c \ + rquota_svc.c \ + svc_socket.c +-rpc_rquotad_CFLAGS = $(TIRPC_CFLAGS) + rpc_rquotad_LDADD = \ + libquota.a \ + $(WRAP_LIBS) \ +-- +2.14.1 + diff --git a/SOURCES/quota-4.04-Install-rquota-3-only-if-RPC-is-enabled.patch b/SOURCES/quota-4.04-Install-rquota-3-only-if-RPC-is-enabled.patch new file mode 100644 index 0000000..a35bf5f --- /dev/null +++ b/SOURCES/quota-4.04-Install-rquota-3-only-if-RPC-is-enabled.patch @@ -0,0 +1,44 @@ +From b5ed9878d60bf2c6764ce8e1de4f69e64c4bdfaf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Wed, 6 Sep 2017 16:25:09 +0200 +Subject: [PATCH] Install rquota(3) only if RPC is enabled +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +rquote(3) documents rpcsvc header files. Thus it should be installed +only if the the header files are installed and that is only if RPC +configure feature is enabled. + +Signed-off-by: Petr Písař +--- + Makefile.am | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 8d80bee..9b852d2 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -27,7 +27,6 @@ man_MANS = \ + quota.1 \ + quot.8 \ + repquota.8 \ +- rquota.3 \ + setquota.8 \ + warnquota.conf.5 \ + warnquota.8 \ +@@ -69,7 +68,10 @@ librpcclient_a_CFLAGS = -Wno-unused + RPCLIBS = librpcclient.a + BUILT_SOURCES = rquota.h rquota.c rquota_clnt.c + CLEANFILES = rquota.c rquota.h rquota_clnt.c +-man_MANS += rpc.rquotad.8 ++man_MANS += \ ++ rpc.rquotad.8 \ ++ rquota.3 ++ + endif + + libquota_a_SOURCES = \ +-- +2.13.5 + diff --git a/SOURCES/quota-4.04-Listen-on-a-TCP-socket.patch b/SOURCES/quota-4.04-Listen-on-a-TCP-socket.patch new file mode 100644 index 0000000..cf1bd4a --- /dev/null +++ b/SOURCES/quota-4.04-Listen-on-a-TCP-socket.patch @@ -0,0 +1,77 @@ +From 31ecd29b3b3f51145fd78f63087c10e9fcadf999 Mon Sep 17 00:00:00 2001 +From: Steve Dickson +Date: Tue, 22 May 2018 12:41:59 +0200 +Subject: [PATCH] Listen on a TCP socket +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +rpc.rquotad spins in libtirpc's rendezvous_request() on accepting TCP +connections because the polled TCP socket is not listening: + +poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=5, + events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=6, + events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=7, + events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 4, -1) = 2 ([{fd=5, + revents=POLLHUP}, {fd=7, revents=POLLHUP}]) +accept(5, 0x7ffe61698700, [128]) = -1 EINVAL (Invalid argument) +accept(7, 0x7ffe61698700, [128]) = -1 EINVAL (Invalid argument) + +The polled descriptors are: + +rpc.rquot 21981 root 4u IPv4 80449159 0t0 UDP *:rquotad +rpc.rquot 21981 root 5u sock 0,9 0t0 80449162 protocol: TCP +rpc.rquot 21981 root 6u IPv6 80449165 0t0 UDP *:rquotad +rpc.rquot 21981 root 7u sock 0,9 0t0 80449168 protocol: TCPv6 + +That results into a high CPU usage just after staring rpc.rquotad +process. + +This patch adds a listen() call to svc_create_sock() +routine which is needed with libtirpc version of svc_tli_create() +as well as a needed IPv6 setsockopt(). + +Signed-off-by: Petr Písař +--- + svc_socket.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/svc_socket.c b/svc_socket.c +index 8a44604..d2e3abf 100644 +--- a/svc_socket.c ++++ b/svc_socket.c +@@ -118,6 +118,15 @@ static int svc_create_sock(struct addrinfo *ai) + return -1; + } + ++ if (ai->ai_family == AF_INET6) { ++ if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, ++ &optval, sizeof(optval)) < 0) { ++ errstr(_("Cannot set IPv6 socket options: %s\n"), strerror(errno)); ++ close(fd); ++ return -1; ++ } ++ } ++ + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0) { + errstr(_("Cannot set socket options: %s\n"), strerror(errno)); + close(fd); +@@ -129,6 +138,15 @@ static int svc_create_sock(struct addrinfo *ai) + close(fd); + return -1; + } ++ ++ if (ai->ai_protocol == IPPROTO_TCP) { ++ if (listen(fd, SOMAXCONN) < 0) { ++ errstr(_("Cannot listen to address: %s\n"), strerror(errno)); ++ close(fd); ++ return -1; ++ } ++ } ++ + return fd; + } + +-- +2.14.3 + diff --git a/SOURCES/quota-4.04-convertquota-Fix-a-file-descriptor-leak-in-convert_e.patch b/SOURCES/quota-4.04-convertquota-Fix-a-file-descriptor-leak-in-convert_e.patch new file mode 100644 index 0000000..e8f7ba0 --- /dev/null +++ b/SOURCES/quota-4.04-convertquota-Fix-a-file-descriptor-leak-in-convert_e.patch @@ -0,0 +1,29 @@ +From 78403029375dbfe809b5b1034301dc687a94397f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 23 Aug 2018 11:09:10 +0200 +Subject: [PATCH 1/3] convertquota: Fix a file descriptor leak in + convert_endian() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + convertquota.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/convertquota.c b/convertquota.c +index d913e05..6c8a553 100644 +--- a/convertquota.c ++++ b/convertquota.c +@@ -363,6 +363,7 @@ static int convert_endian(int type, struct mount_entry *mnt) + } + ret = endian_scan_structures(ofd, type); + end_io(qn); ++ close(ofd); + if (ret < 0) + return ret; + +-- +2.14.4 + diff --git a/SOURCES/quota-4.04-quota-1-Distinguish-between-none-quota-limits-and-no.patch b/SOURCES/quota-4.04-quota-1-Distinguish-between-none-quota-limits-and-no.patch new file mode 100644 index 0000000..ca1c68e --- /dev/null +++ b/SOURCES/quota-4.04-quota-1-Distinguish-between-none-quota-limits-and-no.patch @@ -0,0 +1,72 @@ +From bd36c3cf438ac4fd44b6779714ad0a44453d41b5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 16 Jul 2018 11:22:53 +0200 +Subject: [PATCH] quota(1): Distinguish between none quota limits and no + allocated resources +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If a user does not occupies any space or inodes on a file system but +quota limits are set, quota(1) tool still reports "none": + + # quota -u test + Disk quotas for user test (uid 500): none + +That's because the tool skips printing details for file systems +without any used resources but uses the shares the message with file +system without any quota limits. + +This patch makes the distinction and changes "none" message into "no +quota limits set" and "no limited resources used" respectively. + +Signed-off-by: Petr Písař +--- + quota.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/quota.c b/quota.c +index 15c2a53..0303c7d 100644 +--- a/quota.c ++++ b/quota.c +@@ -188,7 +188,7 @@ static int showquotas(int type, qid_t id, int mntcnt, char **mnt) + char timebuf[MAXTIMELEN]; + char name[MAXNAMELEN]; + struct quota_handle **handles; +- int lines = 0, bover, iover, over; ++ int lines = 0, bover, iover, over, unlimited; + time_t now; + + time(&now); +@@ -204,11 +204,16 @@ static int showquotas(int type, qid_t id, int mntcnt, char **mnt) + goto out_handles; + } + over = 0; ++ unlimited = 1; + for (q = qlist; q; q = q->dq_next) { + bover = iover = 0; +- if (!(flags & FL_VERBOSE) && !q->dq_dqb.dqb_isoftlimit && !q->dq_dqb.dqb_ihardlimit +- && !q->dq_dqb.dqb_bsoftlimit && !q->dq_dqb.dqb_bhardlimit) +- continue; ++ if (!q->dq_dqb.dqb_isoftlimit && !q->dq_dqb.dqb_ihardlimit ++ && !q->dq_dqb.dqb_bsoftlimit && !q->dq_dqb.dqb_bhardlimit) { ++ if (!(flags & FL_VERBOSE)) ++ continue; ++ } else { ++ unlimited = 0; ++ } + msgi = NULL; + if (q->dq_dqb.dqb_ihardlimit && q->dq_dqb.dqb_curinodes >= q->dq_dqb.dqb_ihardlimit) { + msgi = _("File limit reached on"); +@@ -300,7 +305,7 @@ static int showquotas(int type, qid_t id, int mntcnt, char **mnt) + } + } + if (!(flags & FL_QUIET) && !lines && qlist) +- heading(type, id, name, _("none")); ++ heading(type, id, name, unlimited ? _("none") : _("no limited resources used")); + freeprivs(qlist); + out_handles: + dispose_handle_list(handles); +-- +2.14.4 + diff --git a/SOURCES/quota-4.04-quotacheck-Avoid-question-in-non-interactive-mode.patch b/SOURCES/quota-4.04-quotacheck-Avoid-question-in-non-interactive-mode.patch new file mode 100644 index 0000000..3ad605d --- /dev/null +++ b/SOURCES/quota-4.04-quotacheck-Avoid-question-in-non-interactive-mode.patch @@ -0,0 +1,36 @@ +From 4179911dc38af1b6499704a7f7fb710a40c95bdb Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Mon, 5 Feb 2018 15:39:12 +0100 +Subject: [PATCH] quotacheck: Avoid question in non-interactive mode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +A question when quota file version is incorrect is asked even if +quotacheck is run in non-interactive mode. Avoid asking the question in +that case and fail the check instead. + +Reproted-by: Christoph Biedl +Signed-off-by: Jan Kara +Signed-off-by: Petr Písař +--- + quotacheck_v2.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/quotacheck_v2.c b/quotacheck_v2.c +index 4cc8558..86fbf42 100644 +--- a/quotacheck_v2.c ++++ b/quotacheck_v2.c +@@ -363,7 +363,8 @@ static int check_header(char *filename, int fd, int type, int version) + "specified on command line (%d). Quota file header " + "may be corrupted.\n"), + le32toh(head.dqh_version), version); +- if (!ask_yn(_("Continue checking assuming version from command line?"), 1)) ++ if (!(flags & FL_INTERACTIVE) || ++ !ask_yn(_("Continue checking assuming version from command line?"), 1)) + return -1; + detected_versions[type] = version; + } else +-- +2.13.6 + diff --git a/SOURCES/quota-4.04-quotacheck-Fail-check-if-quota-file-magic-is-invalid.patch b/SOURCES/quota-4.04-quotacheck-Fail-check-if-quota-file-magic-is-invalid.patch new file mode 100644 index 0000000..8d99cec --- /dev/null +++ b/SOURCES/quota-4.04-quotacheck-Fail-check-if-quota-file-magic-is-invalid.patch @@ -0,0 +1,35 @@ +From b9525abadba082073e20e54ee7ad2423fc1ae6a8 Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Mon, 5 Feb 2018 16:27:59 +0100 +Subject: [PATCH] quotacheck: Fail check if quota file magic is invalid +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Currently quotacheck will just continue if quotafile magic is invalid. +Instead ask whether we should continue assuming quota format passed from +the command line. + +Signed-off-by: Jan Kara +Signed-off-by: Petr Písař +--- + quotacheck_v2.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/quotacheck_v2.c b/quotacheck_v2.c +index 86fbf42..465765b 100644 +--- a/quotacheck_v2.c ++++ b/quotacheck_v2.c +@@ -357,6 +357,9 @@ static int check_header(char *filename, int fd, int type, int version) + le32toh(head.dqh_version) > known_versions[type]) { + errstr(_("WARNING - Quota file %s has corrupted headers\n"), + filename); ++ if (!(flags & FL_INTERACTIVE) || ++ !ask_yn(_("Continue checking assuming format from command line?"), 0)) ++ return -1; + } + if (le32toh(head.dqh_version) != version) { + errstr(_("Quota file format version %d does not match the one " +-- +2.13.6 + diff --git a/SOURCES/quota-4.04-quotacheck-Report-error-when-caching-of-quota-file-f.patch b/SOURCES/quota-4.04-quotacheck-Report-error-when-caching-of-quota-file-f.patch new file mode 100644 index 0000000..cc363db --- /dev/null +++ b/SOURCES/quota-4.04-quotacheck-Report-error-when-caching-of-quota-file-f.patch @@ -0,0 +1,88 @@ +From 7b6dfd6390476ec7b811c76e4e2653db2994cad4 Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Mon, 5 Feb 2018 15:54:54 +0100 +Subject: [PATCH] quotacheck: Report error when caching of quota file fails +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Currently quotacheck returns with zero exit code even though caching of +quota file fails. Fix it to return with non-zero exit code in that case +as expected. + +Reported-by: Christoph Biedl +Signed-off-by: Petr Písař +--- + quotacheck.c | 29 ++++++++++++++++++++++------- + 1 file changed, 22 insertions(+), 7 deletions(-) + +diff --git a/quotacheck.c b/quotacheck.c +index 9d7940b..b1302b6 100644 +--- a/quotacheck.c ++++ b/quotacheck.c +@@ -924,6 +924,7 @@ static int check_dir(struct mount_entry *mnt) + struct stat st; + int remounted = 0; + int failed = 0; ++ int ret; + + if (lstat(mnt->me_dir, &st) < 0) + die(2, _("Cannot stat mountpoint %s: %s\n"), mnt->me_dir, strerror(errno)); +@@ -939,14 +940,22 @@ static int check_dir(struct mount_entry *mnt) + */ + if (cfmt == QF_XFS) + goto start_scan; +- if (ucheck) +- if (process_file(mnt, USRQUOTA) < 0) ++ if (ucheck) { ++ ret = process_file(mnt, USRQUOTA); ++ if (ret < 0) { ++ failed |= ret; + ucheck = 0; +- if (gcheck) +- if (process_file(mnt, GRPQUOTA) < 0) ++ } ++ } ++ if (gcheck) { ++ ret = process_file(mnt, GRPQUOTA); ++ if (ret < 0) { ++ failed |= ret; + gcheck = 0; ++ } ++ } + if (!ucheck && !gcheck) /* Nothing to check? */ +- return 0; ++ return failed; + if (!(flags & FL_NOREMOUNT)) { + /* Now we try to remount fs read-only to prevent races when scanning filesystem */ + if (mount +@@ -978,8 +987,11 @@ start_scan: + !strcmp(mnt->me_type, MNTTYPE_EXT3) || + !strcmp(mnt->me_type, MNTTYPE_NEXT3) || + !strcmp(mnt->me_type, MNTTYPE_EXT4)) { +- if ((failed = ext2_direct_scan(mnt->me_devname)) < 0) ++ ret = ext2_direct_scan(mnt->me_devname); ++ if (ret < 0) { ++ failed |= ret; + goto out; ++ } + } + else { + #else +@@ -987,8 +999,11 @@ start_scan: + #endif + if (flags & FL_VERYVERBOSE) + putchar('\n'); +- if ((failed = scan_dir(mnt->me_dir)) < 0) ++ ret = scan_dir(mnt->me_dir); ++ if (ret < 0) { ++ failed |= ret; + goto out; ++ } + } + dirs_done++; + if (flags & FL_VERBOSE || flags & FL_DEBUG) +-- +2.13.6 + diff --git a/SOURCES/quota-4.04-quotackeck-Fix-a-directory-descriptor-leak-in-scan_d.patch b/SOURCES/quota-4.04-quotackeck-Fix-a-directory-descriptor-leak-in-scan_d.patch new file mode 100644 index 0000000..341ce6c --- /dev/null +++ b/SOURCES/quota-4.04-quotackeck-Fix-a-directory-descriptor-leak-in-scan_d.patch @@ -0,0 +1,28 @@ +From 0f255ef2570478a855361937445a57a168c8629d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 23 Aug 2018 11:23:43 +0200 +Subject: [PATCH 2/3] quotackeck: Fix a directory descriptor leak in scan_dir() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + quotacheck.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/quotacheck.c b/quotacheck.c +index fd01dfc..2cdf475 100644 +--- a/quotacheck.c ++++ b/quotacheck.c +@@ -538,6 +538,7 @@ static int scan_dir(const char *pathname) + if ((lstat(de->d_name, &st)) == -1) { + errstr(_("lstat: Cannot stat `%s/%s': %s\nGuess you'd better run fsck first !\nexiting...\n"), + pathname, de->d_name, strerror(errno)); ++ closedir(dp); + goto out; + } + +-- +2.14.4 + diff --git a/SOURCES/quota-4.04-repquota-Fix-output-when-user-2-exists.patch b/SOURCES/quota-4.04-repquota-Fix-output-when-user-2-exists.patch new file mode 100644 index 0000000..285c5d1 --- /dev/null +++ b/SOURCES/quota-4.04-repquota-Fix-output-when-user-2-exists.patch @@ -0,0 +1,59 @@ +From 1806ee01060d363beac01fda28c613ab27dbc4df Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Wed, 10 Jan 2018 10:18:43 +0100 +Subject: [PATCH] repquota: Fix output when user -2 exists +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Vladimit Meshkov reported that when user -2 exists and user namespaces +are enabled in the kernel, repquota(8) fails to output anything. He also +analyzed this is because in such case repquota(8) tries to query info +for user -1 which is invalid ID, gets error from the kernel, and bails +out. + +Fix the problem by stopping iteration over IDs when we reach ID -1. + +Reported-by: Vladimir Meshkov +Signed-off-by: Jan Kara +Signed-off-by: Petr Písař +--- + quotaio_generic.c | 5 +++++ + quotaio_xfs.c | 5 +++++ + 2 files changed, 10 insertions(+) + +diff --git a/quotaio_generic.c b/quotaio_generic.c +index 025d712..5b23955 100644 +--- a/quotaio_generic.c ++++ b/quotaio_generic.c +@@ -204,6 +204,11 @@ int vfs_scan_dquots(struct quota_handle *h, + if (ret < 0) + break; + id = kdqblk.dqb_id + 1; ++ /* id -1 is invalid and the last one... */ ++ if (id == -1) { ++ errno = ENOENT; ++ break; ++ } + } + free(dquot); + +diff --git a/quotaio_xfs.c b/quotaio_xfs.c +index 1374cf4..56daf89 100644 +--- a/quotaio_xfs.c ++++ b/quotaio_xfs.c +@@ -219,6 +219,11 @@ static int xfs_kernel_scan_dquots(struct quota_handle *h, + if (ret < 0) + break; + id = xdqblk.d_id + 1; ++ /* id -1 is invalid and the last one... */ ++ if (id == -1) { ++ errno = ENOENT; ++ break; ++ } + } + free(dquot); + +-- +2.13.6 + diff --git a/SOURCES/quota-4.04-rpc-Fix-wrong-limit-for-space-usage.patch b/SOURCES/quota-4.04-rpc-Fix-wrong-limit-for-space-usage.patch new file mode 100644 index 0000000..5d4ed11 --- /dev/null +++ b/SOURCES/quota-4.04-rpc-Fix-wrong-limit-for-space-usage.patch @@ -0,0 +1,35 @@ +From d7694c952073bf2ebb852014d9f979b5e3e7c018 Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Mon, 28 May 2018 18:08:24 +0200 +Subject: [PATCH] rpc: Fix wrong limit for space usage +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Limit of maximum allowable space usage for RPC transfer was wrongly set +to ~4GB instead of ~4TB due to overflow in constant initialization. Fix +it. + +Signed-off-by: Jan Kara +Signed-off-by: Petr Písař +--- + quotaio_rpc.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/quotaio_rpc.c b/quotaio_rpc.c +index 6f25144..edc1e9f 100644 +--- a/quotaio_rpc.c ++++ b/quotaio_rpc.c +@@ -33,7 +33,8 @@ static int rpc_init_io(struct quota_handle *h) + #ifdef RPC + h->qh_info.dqi_max_b_limit = ~(uint32_t)0; + h->qh_info.dqi_max_i_limit = ~(uint32_t)0; +- h->qh_info.dqi_max_b_usage = (~(uint32_t)0) << QUOTABLOCK_BITS; ++ h->qh_info.dqi_max_b_usage = ((uint64_t)(~(uint32_t)0)) ++ << QUOTABLOCK_BITS; + h->qh_info.dqi_max_i_usage = ~(uint32_t)0; + return 0; + #else +-- +2.14.3 + diff --git a/SOURCES/quota-4.04-warnquota-Check-snprintf-for-overflows.patch b/SOURCES/quota-4.04-warnquota-Check-snprintf-for-overflows.patch new file mode 100644 index 0000000..e59c687 --- /dev/null +++ b/SOURCES/quota-4.04-warnquota-Check-snprintf-for-overflows.patch @@ -0,0 +1,76 @@ +From eeef53917864600e0f5ac42ce5c3d884967012a1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 5 Feb 2018 10:31:47 +0100 +Subject: [PATCH 1/2] warnquota: Check snprintf() for overflows +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +GCC 8 with GNU libc 2.27 prerelease warns: + +gcc -DHAVE_CONFIG_H -I. -g -O2 -Wall -fPIC -I/usr/include/tirpc -c -o warnquota.o warnquota.c +warnquota.c: In function ‘lookup_user’: +warnquota.c:415:29: warning: ‘%s’ directive output may be truncated writing up to 2047 bytes into a region of size 255 [-Wformat-truncation=] + snprintf(searchbuf, 256, "(%s=%s)", config->ldap_search_attr, user); + ^~ +warnquota.c:415:2: note: ‘snprintf’ output 4 or more bytes (assuming 2051) into a destination of size 256 + snprintf(searchbuf, 256, "(%s=%s)", config->ldap_search_attr, user); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +warnquota.c: In function ‘warn_quota’: +warnquota.c:896:51: warning: ‘%s’ directive output may be truncated writing up to 2047 bytes into a region of size 2041 [-Wformat-truncation=] + snprintf(config->ldap_uri, CNF_BUFFER, "ldap://%s:%d", config->ldap_host, config->ldap_port); + ^~ ~~~~~~~~~~~~~~~~~ +warnquota.c:896:4: note: ‘snprintf’ output between 10 and 2067 bytes into a destination of size 2048 + snprintf(config->ldap_uri, CNF_BUFFER, "ldap://%s:%d", config->ldap_host, config->ldap_port); + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This is patch fixes it by catching the cases when snprintf() truncates and +reporting an error. + +Perfect fix would fall back into dynamically allocated buffers but +I think that would make these corner case too complicated provided +nobody had yet complained about them. + +Signed-off-by: Petr Písař +--- + warnquota.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/warnquota.c b/warnquota.c +index 073c45e..bc11055 100644 +--- a/warnquota.c ++++ b/warnquota.c +@@ -412,7 +412,13 @@ static char *lookup_user(struct configparams *config, char *user) + } + + /* search for the offender_name in ldap */ +- snprintf(searchbuf, 256, "(%s=%s)", config->ldap_search_attr, user); ++ if (256 <= snprintf(searchbuf, 256, "(%s=%s)", config->ldap_search_attr, ++ user)) { ++ errstr(_("Could not format LDAP search filter for %s user and " ++ "%s search attribute due to excessive length.\n"), ++ user, config->ldap_search_attr); ++ return NULL; ++ } + ret = ldap_search_ext_s(ldapconn, + config->ldap_basedn, LDAP_SCOPE_SUBTREE, + searchbuf, NULL, 0, NULL, NULL, NULL, +@@ -893,7 +899,14 @@ cc_parse_err: + if (config->use_ldap_mail) + { + if (!config->ldap_uri[0]) { +- snprintf(config->ldap_uri, CNF_BUFFER, "ldap://%s:%d", config->ldap_host, config->ldap_port); ++ if (CNF_BUFFER <= snprintf(config->ldap_uri, CNF_BUFFER, ++ "ldap://%s:%d", config->ldap_host, ++ config->ldap_port)) { ++ errstr(_("Could not format LDAP URI because " ++ "it's longer than %d bytes.\n"), ++ CNF_BUFFER); ++ return -1; ++ } + errstr(_("LDAP library version >= 2.3 detected. Please use LDAP_URI instead of hostname and port.\nGenerated URI %s\n"), config->ldap_uri); + } + } +-- +2.13.6 + diff --git a/SOURCES/quota-4.04-warnquota-Fix-comparing-user-name-to-non-null-termin.patch b/SOURCES/quota-4.04-warnquota-Fix-comparing-user-name-to-non-null-termin.patch new file mode 100644 index 0000000..27b22ef --- /dev/null +++ b/SOURCES/quota-4.04-warnquota-Fix-comparing-user-name-to-non-null-termin.patch @@ -0,0 +1,74 @@ +From 59b280ebe22eceaf4250cb3b776674619a4d4ece Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 5 Feb 2018 11:07:41 +0100 +Subject: [PATCH] warnquota: Fix comparing user name to non-null-terminated + utmp.ut_user +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +GCC 8 with GNU libc 2.27 warns: + +gcc -DHAVE_CONFIG_H -I. -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/libnl3 -g -O2 -Wall -fPIC -I/usr/include/tirpc -c -o quota_nld-quota_nld.o `test -f 'quota_nld.c' || echo './'`quota_nld.c +quota_nld.c: In function ‘write_console_warning’: +quota_nld.c:273:7: warning: ‘strcmp’ argument 2 declared attribute ‘nonstring’ [-Wstringop-overflow=] + if (strcmp(user, uent->ut_user)) + ^~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from /usr/include/utmp.h:29, + from quota_nld.c:23: +/usr/include/bits/utmp.h:65:8: note: argument ‘ut_user’ declared here + char ut_user[UT_NAMESIZE] + ^~~~~~~ + +This is because ut_user value misses the terminating null byte if it +fits exactly into ut_user array, as document in utmp(5): + + String fields are terminated by a null byte ('\0') if they are + shorter than the size of the field. + +Recent GCC and glibc recevied compile-time checks and annotations +(__attribute_nonstring_) that catches these mistakes. + +This patch fixes it by using strncmp(3) and by ignoring user names +that does not fit into utmp log format. It's better not to warn than +spamming unrelated user. + +Signed-off-by: Petr Písař +Signed-off-by: Jan Kara +--- + quota_nld.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/quota_nld.c b/quota_nld.c +index ea541e0..8559f25 100644 +--- a/quota_nld.c ++++ b/quota_nld.c +@@ -262,6 +262,8 @@ static void write_console_warning(struct quota_warning *warn) + warn->warntype == QUOTA_NL_BSOFTBELOW) && !(flags & FL_PRINTBELOW)) + return; + uid2user(warn->caused_id, user); ++ if (strlen(user) > UT_NAMESIZE) ++ goto skip_utmp; + strcpy(dev, "/dev/"); + + setutent(); +@@ -270,7 +272,7 @@ static void write_console_warning(struct quota_warning *warn) + if (uent->ut_type != USER_PROCESS) + continue; + /* Entry for a different user? */ +- if (strcmp(user, uent->ut_user)) ++ if (strncmp(user, uent->ut_user, UT_NAMESIZE)) + continue; + sstrncpy(dev+5, uent->ut_line, PATH_MAX-5); + if (stat(dev, &st) < 0) +@@ -281,6 +283,7 @@ static void write_console_warning(struct quota_warning *warn) + } + } + if (!max_atime) { ++skip_utmp: + /* + * This can happen quite easily so don't spam syslog with + * the error +-- +2.13.6 + diff --git a/SOURCES/quota-4.04-warnquota-configuration-tunes.patch b/SOURCES/quota-4.04-warnquota-configuration-tunes.patch new file mode 100644 index 0000000..9030e2e --- /dev/null +++ b/SOURCES/quota-4.04-warnquota-configuration-tunes.patch @@ -0,0 +1,76 @@ +From 67a0dbf6434552e720b0d311597553b3a76f779e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Tue, 23 Aug 2011 13:45:15 +0200 +Subject: [PATCH] warnquota configuration tunes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Rest of changes (378a64006bb1e818e84a1c77808563b802b028fa) not +accepted by upstream (we had root@... addresses and more enterprise +wordings usually there). + +Signed-off-by: Petr Písař +--- + warnquota.c | 2 +- + warnquota.conf | 17 ++++++++--------- + 2 files changed, 9 insertions(+), 10 deletions(-) + +diff --git a/warnquota.c b/warnquota.c +index 0d911e4..2c8e084 100644 +--- a/warnquota.c ++++ b/warnquota.c +@@ -837,7 +837,7 @@ cc_parse_err: + } + #ifdef USE_LDAP_MAIL_LOOKUP + else if (!strcmp(var, "LDAP_MAIL")) { +- if(strcasecmp(value, "true") == 0) ++ if(strncasecmp(value, "true", 4) == 0) + config->use_ldap_mail = 1; + else + config->use_ldap_mail = 0; +diff --git a/warnquota.conf b/warnquota.conf +index b06f81f..7e00947 100644 +--- a/warnquota.conf ++++ b/warnquota.conf +@@ -4,17 +4,16 @@ + # and even blank lines + + # values can be quoted: +-#MAIL_CMD = "/usr/my/sendmail/instead/sendmail -t" +-MAIL_CMD = "/bin/echo" +-FROM = "bas@example.com" ++MAIL_CMD = "/usr/sbin/sendmail -t" ++FROM = "root@example.com" + # but they don't have to be: +-SUBJECT = Hey, user, clean up your account! +-CC_TO = "sysadm@example.com" ++SUBJECT = NOTE: You are exceeding your allocated disk space limits ++CC_TO = "root@example.com" + # If you set this variable CC will be used only when user has less than + # specified grace time left (examples of possible times: 5 seconds, 1 minute, + # 12 hours, 5 days) + # CC_BEFORE = 2 days +-SUPPORT = "support@example.com" ++SUPPORT = "root@example.com" + PHONE = "(123) 456-1111 or (222) 333-4444" + # Text in the beginning of the mail (if not specified, default text is used) + # This way text can be split to more lines +@@ -22,11 +21,11 @@ PHONE = "(123) 456-1111 or (222) 333-4444" + # The expressions %i, %h, %d, and %% are substituted for user/group name, + # host name, domain name, and '%' respectively. For backward compatibility + # %s behaves as %i but is deprecated. +-MESSAGE = Hello user %i, I've noticed you use too much space\ +- on my disk in %h.%d.|Delete your files on the following filesystems:| ++MESSAGE = Your disk usage has exceeded the agreed limits\ ++ on this server|Please delete any unnecessary files on following filesystems:| + # Text in the end of the mail (if not specified, default text using SUPPORT and PHONE + # is created) +-SIGNATURE = See you!| Your admin of %h| ++SIGNATURE = root@example.com + # Following text is used for mails about group exceeding quotas + GROUP_MESSAGE = Hello,|\ + your group %i is using too much disk space at %h.|\ +-- +2.13.5 + diff --git a/SOURCES/quota-4.04-xqmstats-Fix-a-file-descriptor-leak-in-main.patch b/SOURCES/quota-4.04-xqmstats-Fix-a-file-descriptor-leak-in-main.patch new file mode 100644 index 0000000..797fc3f --- /dev/null +++ b/SOURCES/quota-4.04-xqmstats-Fix-a-file-descriptor-leak-in-main.patch @@ -0,0 +1,28 @@ +From 869f514310b72169a294baa37f5a90a291f719f3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Thu, 23 Aug 2018 11:51:47 +0200 +Subject: [PATCH 3/3] xqmstats: Fix a file descriptor leak in main() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Petr Písař +--- + xqmstats.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xqmstats.c b/xqmstats.c +index cdac4a6..59b1d66 100644 +--- a/xqmstats.c ++++ b/xqmstats.c +@@ -35,6 +35,7 @@ int main(int argc, char **argv) + if ((stats = fopen(XQMSTATS, "r")) == NULL) { + if ((stats = fopen(STATFILE, "r")) == NULL) { + errstr(_("The running kernel does not support XFS\n")); ++ fclose(xqm); + return 1; + } + } +-- +2.14.4 + diff --git a/SOURCES/quota_nld.service b/SOURCES/quota_nld.service new file mode 100644 index 0000000..d069003 --- /dev/null +++ b/SOURCES/quota_nld.service @@ -0,0 +1,12 @@ +[Unit] +Description=Disk quota netlink message daemon +After=syslog.target + +[Service] +Type=forking +EnvironmentFile=-/etc/sysconfig/quota_nld +ExecStart=/usr/sbin/quota_nld $QUOTA_NLD_OPTS +PIDFile=/var/run/quota_nld.pid + +[Install] +WantedBy=multi-user.target diff --git a/SOURCES/quota_nld.sysconfig b/SOURCES/quota_nld.sysconfig new file mode 100644 index 0000000..51df5be --- /dev/null +++ b/SOURCES/quota_nld.sysconfig @@ -0,0 +1,5 @@ +# Arguments to pass to quota_nld daemon. +# -b, --print-below Inform about falling usage bellow limits too +# -C, --no-console Do not print messages on last user's terminal +# -D, --no-dbus Do not forward messages to D-Bus +QUOTA_NLD_OPTS="" diff --git a/SOURCES/rpc-rquotad.service b/SOURCES/rpc-rquotad.service new file mode 100644 index 0000000..f9c794e --- /dev/null +++ b/SOURCES/rpc-rquotad.service @@ -0,0 +1,15 @@ +[Unit] +Description=Remote quota server +Documentation=man:rpc.rquotad(8) +Requires=rpcbind.service +PartOf=rpcbind.service +After=rpcbind.service + +[Service] +Type=forking +EnvironmentFile=-/etc/sysconfig/rpc-rquotad +ExecStart=/usr/sbin/rpc.rquotad $RPCRQUOTADOPTS + +[Install] +WantedBy=multi-user.target +WantedBy=nfs-server.service diff --git a/SOURCES/rpc-rquotad.sysconfig b/SOURCES/rpc-rquotad.sysconfig new file mode 100644 index 0000000..4c67c13 --- /dev/null +++ b/SOURCES/rpc-rquotad.sysconfig @@ -0,0 +1,8 @@ +# Optionas to pass to rpc.rquotad daemon. See rpc.rquotad(8) manual page for +# more details. +# -I, --autofs Ignore autofs mount points +# -p port, --port port Listen on alternative port +# -s, --no-setquota Don't allow setting quotas with RPC (default) +# -S, --setquota Allow setting quotas with RPC +# -x path, --xtab path Use alternative NFSD export table +RPCRQUOTADOPTS="" diff --git a/SPECS/quota.spec b/SPECS/quota.spec new file mode 100644 index 0000000..04eb36b --- /dev/null +++ b/SPECS/quota.spec @@ -0,0 +1,972 @@ +# Use netlink to monitor quota usage and warn interactive users +%bcond_without quota_enables_netlink +# Enable getting quotas over remotely +%bcond_without quota_enables_rpc +# Allow setting quota remotely +%bcond_without quota_enables_rpcsetquota +# Disable TCP Wrappers guard in RPC quota daemon +%bcond_with quota_enables_tcpwrappers + +Name: quota +Epoch: 1 +Version: 4.04 +Release: 10%{?dist} +Summary: System administration tools for monitoring users' disk usage +# quota_nld.c, quotaio_xfs.h: GPLv2 +# bylabel.c copied from util-linux: GPLv2+ +# doc/quotas.ms, quotaops.c, quot.c, quotaon.c, edquota.c, quot.h, quota.c, +# quotaio_v1.c: BSD +# COPYING: GPLv2 text and license declaration +## Only in quota-rpc and quota-nls binary package +# svc_socket.c copied from glibc: LGPLv2+ +## Only in quota-nls binary package +# po/cs.po: GPLv2+ +## Not involved in the binary package +# aclocal.m4: FSFULLR and (GPLv2+ with exception) +# ar-lib: GPLv2 with exception +# depcomp: GPLv2+ with exception +# config.guess: GPLv3+ with exception +# config.rpath: GPLv2+ with exception +# config.sub: GPLv3+ with exception +# configure: FSFUL +# install-sh: MIT +# m4/gettext.m4: GPL with exception +# m4/iconv.m4: GPL with exception +# m4/lib-ld.m4: GPL with exception +# m4/lib-link.m4: GPL with exception +# m4/lib-prefix.m4: GPL with exception +# m4/nls.m4: GPL with exception +# m4/po.m4: GPL with exception +# m4/progtest.m4: GPL with exception +# Makefile.in: FSFULLR +# missing: GPLv2+ with exception +# mkinstalldirs: Public Domain +License: BSD and GPLv2 and GPLv2+ +URL: http://sourceforge.net/projects/linuxquota/ +Source0: http://downloads.sourceforge.net/linuxquota/%{name}-%{version}.tar.gz +Source1: quota_nld.service +Source2: quota_nld.sysconfig +Source3: rpc-rquotad.service +Source4: rpc-rquotad.sysconfig +# Not accepted changes (378a64006bb1e818e84a1c77808563b802b028fa) +Patch0: quota-4.04-warnquota-configuration-tunes.patch +Patch1: quota-4.03-Validate-upper-bound-of-RPC-port.patch +# Install rquotad(3) only if RPC is enabled, +# , in upstream after 4.04 +Patch2: quota-4.04-Install-rquota-3-only-if-RPC-is-enabled.patch +# Pass TIRPC header files location to all RPC compilation units, +# , in upstream after 4.04 +Patch3: quota-4.04-Add-TIRPC_CFLAGS-globally-to-CFLAGS-for-RPC-support-.patch +# Do not iterate over negative UIDs in repquota, +# , in upstream after 4.04 +Patch4: quota-4.04-repquota-Fix-output-when-user-2-exists.patch +# Fix snprintf overflows in warnquota, +# , in upstream after 4.04 +Patch5: quota-4.04-warnquota-Check-snprintf-for-overflows.patch +# Fix user name search in utmp log, +# , in upstream after 4.04 +Patch6: quota-4.04-warnquota-Fix-comparing-user-name-to-non-null-termin.patch +# Avoid questions in quotacheck non-interactive mode, in upstream after 4.04 +Patch7: quota-4.04-quotacheck-Avoid-question-in-non-interactive-mode.patch +# Report an error when quotacheck fails to cache quota files, +# in upstream after 4.04 +Patch8: quota-4.04-quotacheck-Report-error-when-caching-of-quota-file-f.patch +# Report an error if quota file magic is invalid, in upstream after 4.04 +Patch9: quota-4.04-quotacheck-Fail-check-if-quota-file-magic-is-invalid.patch +# Fix busy loop in rpc.rquotad, bug #1575956, +# +Patch10: quota-4.04-Listen-on-a-TCP-socket.patch +# Fix current block usage limit in RPC client, in upstream after 4.04, +# +Patch11: quota-4.04-rpc-Fix-wrong-limit-for-space-usage.patch +# Distinguish between none quota limits and no allocated resources in quota(1) +# tool output, proposed to upstream, +# +Patch12: quota-4.04-quota-1-Distinguish-between-none-quota-limits-and-no.patch +# Fix a descriptor leak, bug #1602674, proposed to upstream, +# +Patch13: quota-4.04-convertquota-Fix-a-file-descriptor-leak-in-convert_e.patch +# Fix a descriptor leak, bug #1602674, proposed to upstream, +# +Patch14: quota-4.04-quotackeck-Fix-a-directory-descriptor-leak-in-scan_d.patch +# Fix a descriptor leak, bug #1602674, proposed to upstream, +# +Patch15: quota-4.04-xqmstats-Fix-a-file-descriptor-leak-in-main.patch +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: bash +BuildRequires: coreutils +BuildRequires: e2fsprogs-devel +BuildRequires: gcc +BuildRequires: gettext-devel +BuildRequires: make +BuildRequires: openldap-devel +%if %{with quota_enables_netlink} +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(libnl-3.0) >= 3.1 +BuildRequires: pkgconfig(libnl-genl-3.0) +%endif +%if %{with quota_enables_rpc} +BuildRequires: rpcgen +BuildRequires: pkgconfig(libtirpc) +BuildRequires: systemd +%if %{with quota_enables_tcpwrappers} +BuildRequires: tcp_wrappers-devel +%endif +%endif +Requires: quota-nls = %{epoch}:%{version}-%{release} +Conflicts: kernel < 2.4 + +%description +The quota package contains system administration tools for monitoring +and limiting user and or group disk usage per file system. + + +%if %{with quota_enables_netlink} +%package nld +Summary: quota_nld daemon +Requires: quota-nls = %{epoch}:%{version}-%{release} +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + +%description nld +Daemon that listens on netlink socket and processes received quota warnings. +Note, that you have to enable the kernel support for sending quota messages +over netlink (in Filesystems->Quota menu). The daemon supports forwarding +warning messages to the system D-Bus (so that desktop manager can display +a dialog) and writing them to the terminal user has last accessed. +%endif + + +%if %{with quota_enables_rpc} +%package rpc +Summary: RPC quota daemon +License: BSD and LGPLv2+ and GPLv2 and GPLv2+ +Requires: quota-nls = %{epoch}:%{version}-%{release} +Requires: rpcbind +%if %{with quota_enables_tcpwrappers} +Requires: tcp_wrappers +%endif +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +Conflicts: quota < 1:4.02-3 + +%description rpc +The RPC daemon allows to query and set disk quotas over network. If you run +the daemon on NFS server, you could use quota tools to manage the quotas from +NFS client. +%endif + + +%package warnquota +Summary: Send e-mail to users over quota +Requires: quota-nls = %{epoch}:%{version}-%{release} + +%description warnquota +Utility that checks disk quota for each local file system and mails a warning +message to those users who have reached their soft limit. It is typically run +via cron(8). + + +%package nls +Summary: Gettext catalogs for disk quota tools +License: BSD and LGPLv2+ and GPLv2 and GPLv2+ +BuildArch: noarch + +%description nls +Disk quota tools messages translated into different natural languages. + + +%if %{with quota_enables_rpc} +%package devel +Summary: Development files for quota RPC +License: GPLv2 +# Do not run-require main package, the header files define RPC API to be +# implemented by the developer, not an API for an existing quota library. + +%description devel +This package contains development header files for implementing disk quotas +on remote machines. +%endif + + +%package doc +Summary: Additional documentation for disk quotas +Requires: quota = %{epoch}:%{version}-%{release} +BuildArch: noarch +AutoReq: 0 + +%description doc +This package contains additional documentation for disk quotas concept in +Linux/UNIX environment. + + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +# Regenerate build scripts +autoreconf -f -i + +%build +%global _hardened_build 1 +%configure \ + --enable-bsd-behaviour \ + --enable-ext2direct=yes \ + --enable-ldapmail=yes \ +%if %{with quota_enables_tcpwrappers} + --enable-libwrap=yes \ +%else + --disable-libwrap \ +%endif +%if %{with quota_enables_netlink} + --enable-netlink=yes \ +%else + --disable-netlink \ +%endif + --enable-nls \ + --disable-rpath \ +%if %{with quota_enables_rpc} + --enable-rpc=yes \ +%else + --disable-rpc \ +%endif +%if %{with quota_enables_rpcsetquota} + --enable-rpcsetquota=yes \ +%else + --disable-rpcsetquota \ +%endif + --disable-silent-rules \ + --disable-xfs-roothack +make + + +%install +make install DESTDIR=%{buildroot} +rm -rf $RPM_BUILD_ROOT%{_docdir}/%{name} + +%if %{with quota_enables_netlink} +install -p -m644 -D %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/quota_nld.service +install -p -m644 -D %{SOURCE2} \ + $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/quota_nld +%endif +%if %{with quota_enables_rpc} +install -p -m644 -D %{SOURCE3} $RPM_BUILD_ROOT%{_unitdir}/rpc-rquotad.service +install -p -m644 -D %{SOURCE4} \ + $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/rpc-rquotad +%endif + +%find_lang %{name} + + +%check +make check + + +%if %{with quota_enables_netlink} +%post nld +%systemd_post quota_nld.service + +%preun nld +%systemd_preun quota_nld.service + +%postun nld +%systemd_postun_with_restart quota_nld.service +%endif + + +%if %{with quota_enables_rpc} +%post rpc +%systemd_post rpc-rquotad.service + +%preun rpc +%systemd_preun rpc-rquotad.service + +%postun rpc +%systemd_postun_with_restart rpc-rquotad.service +%endif + + +%files +%{_bindir}/* +%{_sbindir}/* +%exclude %{_sbindir}/quota_nld +%if %{with quota_enables_rpc} +%exclude %{_sbindir}/rpc.rquotad +%endif +%exclude %{_sbindir}/warnquota +%{_mandir}/man1/* +%{_mandir}/man8/* +%exclude %{_mandir}/man8/quota_nld.8* +%if %{with quota_enables_rpc} +%exclude %{_mandir}/man8/rpc.rquotad.8* +%endif +%exclude %{_mandir}/man8/warnquota.8* +%doc Changelog + +%if %{with quota_enables_netlink} +%files nld +%config(noreplace) %{_sysconfdir}/sysconfig/quota_nld +%{_unitdir}/quota_nld.service +%{_sbindir}/quota_nld +%{_mandir}/man8/quota_nld.8* +%doc Changelog +%endif + +%if %{with quota_enables_rpc} +%files rpc +%config(noreplace) %{_sysconfdir}/sysconfig/rpc-rquotad +%{_unitdir}/rpc-rquotad.service +%{_sbindir}/rpc.rquotad +%{_mandir}/man8/rpc.rquotad.8* +%doc Changelog +%endif + +%files warnquota +%config(noreplace) %{_sysconfdir}/quotagrpadmins +%config(noreplace) %{_sysconfdir}/quotatab +%config(noreplace) %{_sysconfdir}/warnquota.conf +%{_sbindir}/warnquota +%{_mandir}/man5/* +%{_mandir}/man8/warnquota.8* +%doc Changelog README.ldap-support README.mailserver + +%files nls -f %{name}.lang +# All the other packages require quota-nls, COPYING here is enough. +%license COPYING +%doc Changelog + +%if %{with quota_enables_rpc} +%files devel +%license COPYING +%dir %{_includedir}/rpcsvc +%{_includedir}/rpcsvc/* +%{_mandir}/man3/* +%endif + +%files doc +%doc doc/* ldap-scripts + + +%changelog +* Thu Aug 23 2018 Petr Pisar - 1:4.04-10 +- Fix file descriptor leaks in error code paths (bug #1602674) + +* Tue Jul 24 2018 Petr Pisar - 1:4.04-9 +- Distinguish between none quota limits and no allocated resources in quota(1) + tool output + +* Sat Jul 14 2018 Fedora Release Engineering - 1:4.04-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed May 30 2018 Petr Pisar - 1:4.04-7 +- Fix current block usage limit in RPC client + +* Tue May 22 2018 Petr Pisar - 1:4.04-6 +- Fix busy loop in rpc.rquotad (bug #1575956) + +* Fri Feb 09 2018 Fedora Release Engineering - 1:4.04-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Mon Feb 05 2018 Petr Pisar - 1:4.04-4 +- Avoid questions in quotacheck non-interactive mode +- Report an error when quotacheck fails to cache quota files +- Report an error if quota file magic is invalid + +* Mon Feb 05 2018 Petr Pisar - 1:4.04-3 +- rpcgen tool split from glibc-common package +- Pass TIRPC header files location to all RPC compilation units +- Do not iterate over negative UIDs in repquota +- Fix mistakes in warnquota reported by GCC 8 + +* Thu Nov 30 2017 Petr Pisar - 1:4.04-2 +- Disable TCP wrappers (bug #1518778) + +* Wed Sep 06 2017 Petr Pisar - 1:4.04-1 +- 4.04 bump + +* Mon Aug 28 2017 Petr Pisar - 1:4.03-12 +- Fix memory leaks when running quotacheck on ext file systems (bug #1483543) + +* Thu Aug 03 2017 Fedora Release Engineering - 1:4.03-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1:4.03-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Tue Jul 04 2017 Petr Pisar - 1:4.03-9 +- Fix disabling features at build time +- Fix a race between checking for and opening a directory to be scanned +- Fix an undefined behavior on parsing yes-no answer +- Check for setuid and setgid calls failure in edquota tool +- Check for failures when reading edquota input +- Check for failures when duplicating a file handle + +* Sat Feb 11 2017 Fedora Release Engineering - 1:4.03-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Nov 10 2016 Petr Pisar - 1:4.03-7 +- Fix checking a block read error (upstream bug #123) +- Use direct scanning also for ext4 + +* Fri Jun 10 2016 Petr Pisar - 1:4.03-6 +- Correct repquota indentation for file systems with hiden quota files +- Remove unnecessary quota dependency from quota-devel package +- Break licenses down to each package + +* Thu Mar 10 2016 Petr Pisar - 1:4.03-5 +- Start rpc-rquotad.service when starting nfs-server.service + +* Thu Mar 03 2016 Petr Pisar - 1:4.03-4 +- Declare quota-rpc requires rpcbind because of the rpc.rquotad daemon + +* Mon Feb 22 2016 Petr Pisar - 1:4.03-3 +- Query kernel for next quota on XFS or file system with hidden quota files + (bug #1306195) + +* Thu Feb 04 2016 Fedora Release Engineering - 1:4.03-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jan 06 2016 Petr Pisar - 1:4.03-1 +- 4.03 bump +- Work around Autoconf bug not to link ldap library to everything + (bug #1296455) + +* Thu Jun 18 2015 Fedora Release Engineering - 1:4.02-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Apr 02 2015 Petr Pisar - 1:4.02-3 +- Move rpc.rquotad daemon into quota-rpc sub-package + +* Thu Apr 02 2015 Petr Pisar - 1:4.02-2 +- Add rpc-rquotad.service file which was known as nfs-rquotad.service + in nfs-utils (bug #1206260) + +* Wed Nov 26 2014 Petr Pisar - 1:4.02-1 +- 4.02 bump + +* Sun Aug 17 2014 Fedora Release Engineering - 1:4.01-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering - 1:4.01-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Mar 05 2014 Petr Pisar - 1:4.01-12 +- Prevent from grace period overflow in RPC transport (bug #1072769) + +* Wed Oct 16 2013 Petr Pisar - 1:4.01-11 +- Move /sbin/* files under /usr (bug #983179) +- Harden executables due to rpc.rquotad and quota_nld daemons (bug #983179) +- Document quotagrpadmins(5), quotatab(5), warnquota.conf(5), rcp.rquota(8) + (bug #983179) + +* Sun Aug 04 2013 Fedora Release Engineering - 1:4.01-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu Jun 13 2013 Petr Pisar - 1:4.01-9 +- Close FILE handles on error too + +* Wed Jun 12 2013 Petr Pisar - 1:4.01-8 +- Allow to set limits using multiplicative units + +* Mon May 27 2013 Petr Pisar - 1:4.01-7 +- Add LGPLv2+ and GPLv2 to license declaration +- Correct changelog dates +- Package additional LDAP scripts as a documentation +- Package XFS-specific tools + +* Mon May 20 2013 Petr Pisar - 1:4.01-6 +- Remove code for migration from systemv-style init script +- Drop useless dependency on initscripts (bug #964440) + +* Thu Mar 14 2013 Petr Pisar - 1:4.01-5 +- Add quotasync(1) manual page +- Fix quota, repquota, and quotasync usage help + +* Tue Feb 05 2013 Petr Pisar - 1:4.01-4 +- Do not fiddle with quota files on XFS and GFS (bug #846296) +- Make sure option -d at quotacheck provides at least as much information as + option -v (SF#3602777) + +* Mon Dec 03 2012 Petr Pisar - 1:4.01-3 +- Define charset in e-mails sent by warnquota (SF#3571589) + +* Tue Sep 25 2012 Petr Pisar - 1:4.01-2 +- Make group warning message more official + +* Fri Sep 07 2012 Petr Pisar - 1:4.01-1 +- 4.01 bump + +* Wed Aug 22 2012 Petr Pisar - 1:4.00-6 +- Modernize systemd scriptlets (bug #850288) + +* Sat Jul 21 2012 Fedora Release Engineering - 1:4.00-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jul 03 2012 Petr Pisar - 1:4.00-4 +- Fix editting more users with edquota +- Report all quotas on XFS (bug #837341) + +* Sat Jan 14 2012 Fedora Release Engineering - 1:4.00-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Sep 1 2011 Petr Pisar - 1:4.00-2 +- Remove unneeded cryptographic library build-time dependencies +- Fortify build-time configuration +- Migrate quota_nld service from sysvinit to systemd +- Document --print-below option in quota_nld service + +* Tue Aug 23 2011 Petr Pisar - 1:4.00-1 +- 4.00 bump +- Remove unneeded LDAP linking patch +- Prevent from stripping by configure option +- Remove unneeded sed scripts on sources +- Remove unneeded file removal + +* Thu Aug 18 2011 Petr Pisar - 1:4.00-0.17.pre1 +- Do not report missing utmp record to syslog (bug #731622) + +* Fri Jul 15 2011 Petr Pisar - 1:4.00-0.16.pre1 +- Report quotacheck failures by return code (bug #717982) +- Improve quotacheck error message (bug #717982) + +* Thu May 12 2011 Petr Pisar - 1:4.00-0.15.pre1 +- Make dirname static to work with nss_db (bug #703567) +- Clean spec file + +* Mon Apr 11 2011 Petr Pisar - 1:4.00-0.14.pre1 +- Initialize v2r1 ddquot padding in dump (bug #695409) +- Do not pass NULL to XGETQSTAT quotactl() + +* Mon Mar 21 2011 Petr Pisar - 1:4.00-0.13.pre1 +- Fix repquota to get latest quota info header (bug #689458) + +* Fri Mar 11 2011 Petr Pisar - 1:4.00-0.12.pre1 +- Fix ddquot buffer leak + +* Thu Mar 10 2011 Petr Pisar - 1:4.00-0.11.pre1 +- Disable grace period/times remote setting + +* Mon Feb 28 2011 Petr Pisar - 1:4.00-0.10.pre1 +- Do not use real domains in warnquota example + +* Thu Feb 17 2011 Petr Pisar - 1:4.00-0.9.pre1 +- Explain meaning of the second column in repquota output +- Make RPC handle properly host names with colons (i.e. IPv6 server host name) + +* Wed Feb 09 2011 Petr Pisar - 1:4.00-0.8.pre1 +- Initialize vfsold block and inode value boundries for new quota file + (bug #668688) + +* Tue Feb 08 2011 Fedora Release Engineering - 1:4.00-0.7.pre1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Feb 04 2011 Petr Pisar - 1:4.00-0.6.pre1 +- Store quota_nld PID into PID file (bug #634137) +- Do not allow non-root to control quota_nld service (bug #634137) +- Add quotasync tool (bug #596794) +- Implement quotacheck for GFS2 (bug #596794) + +* Wed Feb 02 2011 Petr Pisar - 1:4.00-0.5.pre1 +- Correct manual pages + +* Tue Jan 11 2011 Petr Pisar - 1:4.00-0.4.pre1 +- Make RPC block factor dynamic (bug #667757) +- Check whether set limits fit into the range supported by quota format + (bug #668688) +- Check set limits fit into the range supported by RPC transport (bug #668691) + +* Mon Jan 10 2011 Petr Pisar - 1:4.00-0.3.pre1 +- Document --always-resolve option + +* Tue Dec 14 2010 Petr Pisar - 1:4.00-0.2.pre1 +- Comment example quotatab to silent warnquota + +* Tue Nov 16 2010 Petr Pisar - 1:4.00-0.1.pre1 +- 4.00-pre1 bump +- Separate gettext catalogs becuase they are required by all binary sub-packages + +* Mon Nov 15 2010 Petr Pisar - 1:3.17-18 +- Break warnquota dependency on main package + +* Mon Nov 15 2010 Petr Pisar - 1:3.17-17 +- Convert Changelog to UTF-8 + +* Mon Nov 15 2010 Petr Pisar - 1:3.17-16 +- Break dependecies on main package as there are none +- Add plain text documentation to each sub-package +- Package additional documentation into `doc' sub-package + +* Thu Nov 11 2010 Petr Pisar - 1:3.17-15 +- Add quota_nld daemon init script (bug #634169) +- Sub-package quota_nld files to weak dependecies +- Sub-package warnquota files to weak dependecies + +* Wed Oct 06 2010 Petr Pisar - 1:3.17-14 +- Remove quotactl(2) as it's part of `man-pages' package (bug #640590) + +* Tue May 11 2010 Petr Pisar 1:3.17-13 +- Add GFS2 support + +* Mon May 10 2010 Petr Pisar 1:3.17-12 +- Prevent corruptive read/write from/to NULL address in rpc.rquotad + (Resolves #528581, example in #532342) +- Fix spelling in summary + +* Fri Mar 12 2010 Daniel Novotny 1:3.17-11 +- the require from previous fix deleted altogether (it will + be resolved automatically) + +* Fri Mar 12 2010 Daniel Novotny 1:3.17-10 +- Requires: e2fsprogs changed to e2fsprogs-libs (#570005) + +* Tue Feb 23 2010 Daniel Novotny 1:3.17-9 +- fix #565124 - FTBFS quota-3.17-8.fc13: ImplicitDSOLinking + +* Tue Sep 29 2009 Ondrej Vasik 1:3.17-8 +- add buildrequires for quota_nld, enable-netlink to build + quota_nld (#526047) + +* Fri Sep 18 2009 Ondrej Vasik 1:3.17-7 +- Fix headers and structs in quotactl manpage(#524138) + +* Fri Aug 28 2009 Ondrej Vasik 1:3.17-6 +- symlink manpage for rpc.rquotad + +* Sun Jul 26 2009 Fedora Release Engineering - 1:3.17-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Fri Mar 13 2009 Ondrej Vasik 1:3.17-4 +- clarify statements about LDAP in warnquota conf + (related to #490106) +- fix parsing issue in warnquota.c(#490125) +- enable rpcsetquota by default(#159292, #469753) + +* Fri Mar 13 2009 Ondrej Vasik 1:3.17-3 +- add missing buildrequires needed to compile with + enable-ldapmail=try option with LDAP(#490106) + +* Wed Feb 25 2009 Fedora Release Engineering - 1:3.17-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Jan 13 2009 Ondrej Vasik 1:3.17-1 +- new upstream release, remove already applied patches + +* Mon Dec 08 2008 Ondrej Vasik 1:3.16-8 +- fix documentation inconsistency (now rpc(3) instead of + rpc(3N) in rquotad manpage) (#474836) + +* Fri Nov 14 2008 Ondrej Vasik 1:3.16-7 +- fix quotaoff --help output (was same as quotaon output) + +* Thu Oct 30 2008 Ondrej Vasik 1:3.16-6 +- fix implementation of ext4 support + (by Mingming Cao, #469127) + +* Wed Sep 10 2008 Ondrej Vasik 1:3.16-5 +- fix rpmlint warnings - absolute symlink and not using epoch + in version in changelog (#226353) +- rquota headers and manpage now in devel subpackage + +* Wed Aug 27 2008 Ondrej Vasik 3.16-4 +- fix bug in warnquota which could result in bogus hostname + and domainname (upstream) +- remove IMMUTABLE flag from quota file in quotacheck(upstream) + +* Tue Aug 05 2008 Ondrej Vasik 3.16-3 +- Add support for -h option (do not show invalid option + error) at edquota,setquota and quota (#457898) + +* Fri Jun 20 2008 Ondrej Vasik 3.16-2 +- upstream fix of some typos, string formats + 4TB+ fix + for repquota +- some additional stripping removal +- change default mode of binaries from 555 to 755 + (strip error messages in build log) + +* Wed Apr 23 2008 Ondrej Vasik 3.16-1 +- own directory of rpcsvc headers(#442143) +- new upstream release + +* Wed Mar 12 2008 Ondrej Vasik 3.15-6 +- added enable-ldapmail=try option(wonder how #133207 + got closed by FC-4 without it or warnquota.conf change) +- dropped with-ext2direct=no option - this option is + invalid and original bug was fixed in 3.07 + +* Thu Mar 6 2008 Ondrej Vasik 3.15-5 +- added symbolic link for quotaoff man page(#436110) +- don't ship xqmstats.8 man page as we don't ship those + binaries(#436100) + +* Thu Feb 21 2008 Ondrej Vasik 3.15-4 +- added pointers to quota_nld and warnquota to some + manpages(upstream, #83975) + +* Tue Feb 12 2008 Ondrej Vasik 3.15-3 +- allow to build with rpcsetquota enabled(disabled by + default, #159292) +- rebuild for gcc43 + +* Thu Jan 24 2008 Steve Dickson 3.15-2 +- More review comments: + - BuiltPreReq to BuiltReq + - Removed '.' From Summary + - Added 'GPLv2+' to License Tag + - Condensed the _sysconfdir entries in to one line + +* Thu Jan 24 2008 Steve Dickson 3.15-1 +- Upgraded to version 3.15 +- Updated spec file per Merge Review (bz 226353) + +* Thu Feb 15 2007 Steve Dickson 3.14-1 +- Upgraded to version 3.14 (bz# 213641) + +* Mon Dec 4 2006 Thomas Woerner 1:3.13-1.3 +- tcp_wrappers has a new devel and libs sub package, therefore changing build + requirement for tcp_wrappers to tcp_wrappers-devel + +* Wed Nov 1 2006 Steve Dickson 1:3.13-1.2.3.2 +- Added range checking on -p flag (bz 205145) +- Error message prints garbage characters (bz 201226) + +* Wed Jul 12 2006 Jesse Keating - 1:3.13-1.2.3.1 +- rebuild + +* Fri Jun 30 2006 Steve Dickson - 1:3.13-1.2.3 +- fix 192826 - quota config files should not be overwritten + +* Fri Feb 10 2006 Jesse Keating - 1:3.13-1.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 1:3.13-1.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Oct 31 2005 Steve Dickson 3.13-1 +- Upgraded to version 3.13 (bz# 171245) + +* Thu Aug 18 2005 Florian La Roche +- change the "Requires: kernel" into a "Conflicts:" + +* Sun Sep 26 2004 Rik van Riel 3.12-5 +- add URL (bz# 131862) + +* Fri Sep 24 2004 Steve Dickson +- Fixed typos in warnquota.conf patch + (bz# 82250 and bz# 83974) + +* Mon Sep 13 2004 Steve Dickson +- upgraded to 3.12 + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Tue Jan 27 2004 Florian La Roche +- add -pie support +- update to 3.10 + +* Sat Aug 16 2003 Steve Dickson +- upgraded to 3.0.9 +- added quota-3.09-root_sbindir.patch + +* Sun Aug 10 2003 Elliot Lee 3.06-11 +- Rebuild + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Tue May 27 2003 Steve Dickson +- rebuilt for 7.3 errata + +* Tue Feb 25 2003 Elliot Lee +- rebuilt + +* Sun Feb 23 2003 Tim Powers +- add buildprereq on tcp_wrappers + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Mon Nov 18 2002 Tim Powers +- rebuild on all arches + + +* Fri Sep 6 2002 Philip Copeland 3.06-5 +- added --with-ext2direct=no to fix #73244 + without this users with UID's > 65535 will not + be able to exist on a quota enabled FS + +* Wed Aug 7 2002 Philip Copeland 3.06-4 +- Man page change. #60108 + +* Tue Aug 6 2002 Philip Copeland 3.06-3 +- Bah, I'd dropped epoch from the spec file but seems + we need this if you want to upgrade as the epoch + number has precedence over the version/release + numbers. + +* Wed Jul 17 2002 Philip Copeland 3.06-2 +- Lets stop the makefile from stripping the + binaries as thats rpms job (apparently) + +* Mon Jul 01 2002 Philip Copeland 3.06-1 +- Ditched the 3.01-pre9 src base for 3.06 + Rebuilt without any patchs + +============================================================ + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Mon Feb 25 2002 Elliot Lee +- IfArch the badkernelinclude patch for ppc-only. +- Update to 3.03 + +* Wed Dec 12 2001 Guy Streeter +- Make #include of kernel header file work on non-x86 + +* Wed Sep 5 2001 Preston Brown +- require new initscripts + +* Thu Aug 30 2001 Preston Brown +- fixed bug #52075 (problem with ext2 labels) +- backup data files off by default in quotacheck, optional backup flag added +- fix bug where giving a bad directory or device would cause + quotaon/quotacheck to simulate "-a" behaviour +- if a device name (i.e /dev/hda1) is passed, look up the corresponding mount + point + +* Wed Aug 29 2001 Preston Brown +- return an error code in more cases in convertquota + +* Tue Aug 28 2001 Preston Brown +- 3.01pre9 + +* Fri Jul 20 2001 Preston Brown +- more cleanups on 3.01pre8 + +* Mon Jul 2 2001 Preston Brown +- 3.01 version, everything has changed again. :( + +* Sun Jun 24 2001 Elliot Lee +- Bump release + rebuild. + +* Fri Mar 30 2001 Preston Brown +- use rpc.rquotad from here again (#33738) + +* Thu Mar 15 2001 Preston Brown +- enable ALT_FORMAT for edquota + +* Tue Mar 13 2001 Preston Brown +- I broke passing devices on the cmd line. Fixed. + +* Fri Mar 09 2001 Preston Brown +- quota 3.00 is required by recent kernel 2.4 changes +- no warnquota included this time, not yet ported +- quite a bit of work on quotacheck to make is backwards compatible +- we will likely go back to "quota 2.00" as these projects merge... + +* Fri Feb 09 2001 Florian La Roche +- use "rm -f" instead of only "rm" + +* Wed Feb 7 2001 Preston Brown +- fix quotacheck man page for -a option (#26380) + +* Thu Feb 1 2001 Preston Brown +- 2.00 final, rolls in pretty much all our patches. :) +- fix reporting of in use dquot entries from quotastats +- change repquota man page to fix documentation of -v (#10330) +- include warnquota.conf + +* Mon Nov 20 2000 Bill Nottingham +- fix ia64 build + +* Mon Aug 21 2000 Jeff Johnson +- add LABEL=foo support (#16390). + +* Thu Jul 27 2000 Jeff Johnson +- remote NFS quotas with different blocksize converted incorrectly (#11932). + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Thu Jun 15 2000 Jeff Johnson +- FHS packaging. + +* Wed May 10 2000 Jeff Johnson +- apply patch5 (H.J. Lu) + +* Wed Feb 02 2000 Cristian Gafton +- fix description +- man pages are compressed + +* Tue Jan 18 2000 Preston Brown +- quota 2.00 series +- removed unnecessary patches + +* Thu Aug 5 1999 Jeff Johnson +- fix man page FUD (#4369). + +* Thu May 13 1999 Peter Hanecak +- changes to allow non-root users to build too (Makefile patch, %%attr) + +* Tue Apr 13 1999 Jeff Johnson +- fix for sparc64 quotas (#2147) + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 5) + +* Mon Dec 28 1998 Cristian Gafton +- don't install rpc.rquotad - we will use the one from the knfsd package + instead + +* Thu Dec 17 1998 Jeff Johnson +- merge ultrapenguin 1.1.9 changes. + +* Thu May 07 1998 Prospector System +- translations modified for de, fr, tr + +* Thu Apr 30 1998 Cristian Gafton +- removed patch for mntent + +* Fri Mar 27 1998 Jakub Jelinek +- updated to quota 1.66 + +* Tue Jan 13 1998 Erik Troan +- builds rquotad +- installs rpc.rquotad.8 symlink + +* Mon Oct 20 1997 Erik Troan +- removed /usr/include/rpcsvc/* from filelist +- uses a buildroot and %%attr + +* Thu Jun 19 1997 Erik Troan +- built against glibc + +* Tue Mar 25 1997 Erik Troan +- Moved /usr/sbin/quota to /usr/bin/quota