quota: add quota package (#2995)

* quota: migrate from SPECS-EXTENDED to SPECS

* quota: update to 4.06 (imported from F36)

* quota: apply the unapplied patches

F36 seems to have unapplied patches and this looks to be unintentional.
Let's apply them.

* quota: update signatures file

* quota: Remove conflicts with older quota package

We don't have an older quota package so this line is unnecessary

* cgmanifest: Update quota entry with new 4.06 version

* quota: use %autosetup macro

Signed-off-by: Chris Co <chrco@microsoft.com>
This commit is contained in:
Christopher Co 2022-05-16 18:43:24 -07:00 committed by GitHub
parent 6c097f283b
commit cf695831b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
34 changed files with 454 additions and 1223 deletions

View File

@ -1,106 +0,0 @@
From b6bb53e1124e6b813fe4de5682b9d9a9f8a1fba8 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Tue, 2 Apr 2019 16:54:49 +0200
Subject: [PATCH] COPYING: Update mailing address
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
COPYING | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/COPYING b/COPYING
index 784e9cf..bb6a5e0 100644
--- a/COPYING
+++ b/COPYING
@@ -1,16 +1,16 @@
This package, the quota tools, are made available under the GNU Public License
version 2.
-----------------------------------------------------------------------
+-----------------------------------------------------------------------
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -19,7 +19,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
+the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@@ -59,8 +59,8 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
-
- GNU GENERAL PUBLIC LICENSE
+
+ GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@@ -114,7 +114,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
-
+
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
@@ -172,7 +172,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
-
+
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
@@ -229,7 +229,7 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
-
+
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
@@ -259,7 +259,7 @@ make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
- NO WARRANTY
+ NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
@@ -281,4 +281,4 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
- END OF TERMS AND CONDITIONS
+ END OF TERMS AND CONDITIONS
--
2.20.1

View File

@ -1,53 +0,0 @@
From 514cfb367e9c673c9c18b84a9c9c94ea84b91112 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Fri, 21 Feb 2020 10:00:05 +0100
Subject: [PATCH] Fix ignoring disabled quotas
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
"quota" command ignores file systems without enabled quotas. (In
contrast to "quota -f".) This works for local file systems and it used
to work for NFS file system until this commit:
commit 4cd287f3fa3838a31eb6636366f8ce26ee6e1425
Author: Jan Kara <jack@suse.cz>
Date: Tue May 28 10:52:49 2019 +0200
rpc: Clarify error message when cannot connect to rpc.rquotad
Currently when RPC rquota service is not registered, we report somewhat
confusing "No such file of directory" error. For other errors when
creating rquota request we report "Connection refused". There's no big
difference for user between these errors and neither of them tells what
really happened. So just unify handling of these errors and report more
general error telling the user where the problem is.
that broke it. "quota" command now reports an error whenever at least
one NFS-mounted file system has disabled the quotas. This renders the
tool unusable.
This patch readds an exception for the ENOENT errno that was removed
with the commit probably by a mistake.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
quotaops.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/quotaops.c b/quotaops.c
index 1a8d7fe..0daa8ec 100644
--- a/quotaops.c
+++ b/quotaops.c
@@ -127,7 +127,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo
char *estr;
/* If rpc.rquotad is not running, filesystem might be just without quotas... */
- if (ignore_noquota && errno == ECONNREFUSED)
+ if (ignore_noquota && (errno == ENOENT || errno == ECONNREFUSED))
continue;
if (errno == ECONNREFUSED) {
--
2.21.1

View File

@ -1,74 +0,0 @@
From bbcf9eedb2299ab55a0ae208e196eb2ca59ad97e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Thu, 30 May 2019 13:20:25 +0200
Subject: [PATCH] Make a directory for quota_nld PID file configurable
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
While Filesystem Hierarchy Standard prescribes /var/run path for
storing PID files, some (systemd-based) distributions uses /run.
This patch adds a --with-pid-dir=DIRECTORY option to the ./configure
script. The option enables to change the path. Default one is
/var/run as used to be until now.
(I did not use $localstatedir environment variable because Autoconf
manual allows using "precious" variables only in a makefile.)
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
configure.ac | 10 ++++++++++
quota_nld.c | 4 ++--
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index b783568..3cb57c5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -277,6 +277,15 @@ AS_IF([test "$with_proc_mounts" != "no"], [
AC_DEFINE_UNQUOTED([ALT_MTAB], ["$with_proc_mounts"], [File with mounted filesystems])
])
+AC_ARG_WITH([pid-dir],
+ [AS_HELP_STRING([--with-pid-dir=DIRECTORY], [Create PID files in this directory instead of /var/run])],
+ [with_pid_dir="$withval"]
+)
+AS_IF([test "X$with_pid_dir" == "X" -o "$with_pid_dir" == "yes" -o "$with_pid_dir" == "no"],[
+ with_pid_dir="/var/run"
+])
+AC_DEFINE_UNQUOTED([PID_DIR], ["$with_pid_dir"], [Directory for PID files])
+
AC_DEFINE_UNQUOTED([COMPILE_OPTS], ["$COMPILE_OPTS"], [Configuration options])
AC_CONFIG_FILES([
@@ -297,6 +306,7 @@ Build configuration:
libwrap: ${build_libwrap}
netlink: ${build_netlink}
nls: ${enable_nls}
+ pid-dir: ${with_pid_dir}
proc-mounts: ${with_proc_mounts}
rpc: ${build_rpc}
rpcsetquota: ${enable_rpcsetquota}
diff --git a/quota_nld.c b/quota_nld.c
index ac24bdb..72d99a9 100644
--- a/quota_nld.c
+++ b/quota_nld.c
@@ -403,12 +403,12 @@ static char *build_pid_file_name(void)
errstr(_("Undefined program name.\n"));
return NULL;
}
- pid_name = malloc(9 + strlen(progname) + 4 + 1);
+ pid_name = malloc(strlen(PID_DIR) + 1 + strlen(progname) + 4 + 1);
if (!pid_name) {
errstr(_("Not enough memory to build PID file name.\n"));
return NULL;
}
- sprintf(pid_name, "/var/run/%s.pid", progname);
+ sprintf(pid_name, "%s/%s.pid", PID_DIR, progname);
return pid_name;
}
--
2.20.1

View File

@ -1,112 +0,0 @@
From a4b0af23e1e3761825e9d4ac075e3fcae8ab91cb Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Fri, 24 May 2019 12:03:27 +0200
Subject: [PATCH 1/4] Make messages about failures for NFS consistent with
local filesystems
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Currently, some types for failures when fetching quota information for
NFS filesystem were silent (e.g. when rpc.rquotad was not running) while
others were reporting error message (e.g. when rpc connection failed).
There's no big difference in these for the user / administrator and also
is inconsistent with how we deal with local filesystems - there we
report error if the filesystem was explicitely specified on command line
and silently ignore it for "scan all" operations.
So change error reporting for NFS to report errors about quota not being
supported if and only if filesystem was explicitely specified on command
line.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
edquota.c | 4 ++--
quota.c | 2 +-
quotaops.c | 2 +-
setquota.c | 6 +++---
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/edquota.c b/edquota.c
index 912f833..a77106c 100644
--- a/edquota.c
+++ b/edquota.c
@@ -176,7 +176,7 @@ static void copy_prototype(int argc, char **argv, struct quota_handle **handles)
protoprivs = getprivs(protoid, handles, 0);
while (argc-- > 0) {
id = name2id(*argv, quotatype, !!(flags & FL_NUMNAMES), NULL);
- curprivs = getprivs(id, handles, 0);
+ curprivs = getprivs(id, handles, !dirname);
if (!curprivs)
die(1, _("Cannot get quota information for user %s\n"), *argv);
argv++;
@@ -296,7 +296,7 @@ int main(int argc, char **argv)
else {
for (; argc > 0; argc--, argv++) {
id = name2id(*argv, quotatype, !!(flags & FL_NUMNAMES), NULL);
- curprivs = getprivs(id, handles, 0);
+ curprivs = getprivs(id, handles, !dirname);
if (!curprivs)
die(1, _("Cannot get quota information for user %s.\n"), *argv);
if (flags & FL_EDIT_TIMES) {
diff --git a/quota.c b/quota.c
index 8235013..be494e3 100644
--- a/quota.c
+++ b/quota.c
@@ -168,7 +168,7 @@ static int showquotas(int type, qid_t id, int mntcnt, char **mnt)
((flags & FL_NOAUTOFS) ? MS_NO_AUTOFS : 0)
| ((flags & FL_LOCALONLY) ? MS_LOCALONLY : 0)
| ((flags & FL_NFSALL) ? MS_NFS_ALL : 0));
- qlist = getprivs(id, handles, !!(flags & FL_QUIETREFUSE));
+ qlist = getprivs(id, handles, !mntcnt || (flags & FL_QUIETREFUSE));
if (!qlist) {
over = 1;
goto out_handles;
diff --git a/quotaops.c b/quotaops.c
index 976e6b3..ad29fd9 100644
--- a/quotaops.c
+++ b/quotaops.c
@@ -125,7 +125,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int quiet)
if (!(q = handles[i]->qh_ops->read_dquot(handles[i], id))) {
/* If rpc.rquotad is not running filesystem might be just without quotas... */
- if (errno != ENOENT && (errno != ECONNREFUSED || !quiet)) {
+ if (!quiet || (errno != ENOENT && errno != ECONNREFUSED)) {
int olderrno = errno;
id2name(id, handles[i]->qh_type, name);
diff --git a/setquota.c b/setquota.c
index bfd6682..08fdbfc 100644
--- a/setquota.c
+++ b/setquota.c
@@ -314,7 +314,7 @@ static int setlimits(struct quota_handle **handles)
struct dquot *q, *protoq, *protoprivs = NULL, *curprivs;
int ret = 0;
- curprivs = getprivs(id, handles, 0);
+ curprivs = getprivs(id, handles, !!(flags & FL_ALL));
if (flags & FL_PROTO) {
protoprivs = getprivs(protoid, handles, 0);
for (q = curprivs, protoq = protoprivs; q && protoq; q = q->dq_next, protoq = protoq->dq_next) {
@@ -435,7 +435,7 @@ static int batch_setlimits(struct quota_handle **handles)
int ret = 0;
while (!read_entry(&id, &isoftlimit, &ihardlimit, &bsoftlimit, &bhardlimit)) {
- curprivs = getprivs(id, handles, 0);
+ curprivs = getprivs(id, handles, !!(flags & FL_ALL));
for (q = curprivs; q; q = q->dq_next) {
q->dq_dqb.dqb_bsoftlimit = bsoftlimit;
q->dq_dqb.dqb_bhardlimit = bhardlimit;
@@ -474,7 +474,7 @@ static int setindivgraces(struct quota_handle **handles)
int ret = 0;
struct dquot *q, *curprivs;
- curprivs = getprivs(id, handles, 0);
+ curprivs = getprivs(id, handles, !!(flags & FL_ALL));
for (q = curprivs; q; q = q->dq_next) {
if (q->dq_dqb.dqb_bsoftlimit && toqb(q->dq_dqb.dqb_curspace) > q->dq_dqb.dqb_bsoftlimit)
q->dq_dqb.dqb_btime = toset.dqb_btime;
--
2.20.1

View File

@ -1,73 +0,0 @@
From 00d61f21bfa3ccf40826ce22de12cfeeab8a40a5 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
Date: Mon, 1 Apr 2019 02:23:59 +0300
Subject: [PATCH] Revert "configure.ac: fix pkg_check_modules calls"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
CFLAGS and LIBS are variables that users are entitled to modify in order
to compile the package, so do not tamper with CFLAGS and LIBS.
COM_ERR_CFLAGS, EXT2FS_CFLAGS, DBUS_CFLAGS, LIBNL3_CFLAGS, TIRPC_CFLAGS,
COMM_ERR_LIBS, EXT2FS_LIBS, DBUS_LIBS, LIBNL3_LIBS, and TIRPC_LIBS
should be used directly where appropriate and apparently they already
are.
This reverts commit b54d97d677481287faa5d6b98c92f111141c1af3.
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
configure.ac | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/configure.ac b/configure.ac
index e8e6412..ff7b9df 100644
--- a/configure.ac
+++ b/configure.ac
@@ -104,13 +104,13 @@ AC_ARG_ENABLE([ext2direct],
)
AS_IF([test "x$enable_ext2direct" != "xno"], [
build_ext2direct="yes"
- PKG_CHECK_MODULES([COM_ERR],[com_err], [CFLAGS="$CFLAGS $COM_ERR_CFLAGS" LIBS="$LIBS $COMM_ERR_LIBS"], [
+ PKG_CHECK_MODULES([COM_ERR],[com_err], [], [
build_ext2direct="no"
AS_IF([test "x$enable_ext2direct" = "xyes"], [
AC_MSG_ERROR([Ext2direct requested but required com_err library not found])
])
])
- PKG_CHECK_MODULES([EXT2FS],[ext2fs], [CFLAGS="$CFLAGS $EXT2FS_CFLAGS" LIBS="$LIBS $EXT2FS_LIBS"], [
+ PKG_CHECK_MODULES([EXT2FS],[ext2fs], [], [
build_ext2direct="no"
AS_IF([test "x$enable_ext2direct" = "xyes"], [
AC_MSG_ERROR([Ext2direct requested but required ext2fs library not found])
@@ -138,13 +138,13 @@ AC_ARG_ENABLE([netlink],
)
AS_IF([test "x$enable_netlink" != "xno"], [
build_netlink="yes"
- PKG_CHECK_MODULES([DBUS], [dbus-1], [CFLAGS="$CFLAGS $DBUS_CFLAGS" LIBS="$LIBS $DBUS_LIBS"], [
+ PKG_CHECK_MODULES([DBUS], [dbus-1], [], [
build_netlink="no"
AS_IF([test "x$enable_netlink" = "xyes"] , [
AC_MSG_ERROR([Required dbus libraries for quota netlink daemon not found.])
])
])
- PKG_CHECK_MODULES([LIBNL3], [libnl-3.0 >= 3.1 libnl-genl-3.0], [CFLAGS="$CFLAGS $LIBNL3_CFLAGS" LIBS="$LIBS $LIBNL3_LIBS"], [
+ PKG_CHECK_MODULES([LIBNL3], [libnl-3.0 >= 3.1 libnl-genl-3.0], [], [
build_netlink="no"
AS_IF([test "x$enable_netlink" = "xyes"] , [
AC_MSG_ERROR([Required libnl3 libraries for quota netlink daemon not found.])
@@ -207,7 +207,7 @@ AS_IF([test x"$enable_rpc" != "xno"], [
build_rpc="no"
])
- PKG_CHECK_MODULES([TIRPC], [libtirpc], [CFLAGS="$CFLAGS $TIRPC_CFLAGS" LIBS="$LIBS $TIRPC_LIBS"], [
+ PKG_CHECK_MODULES([TIRPC], [libtirpc], [], [
AS_IF([test x"$enable_rpc" = "xyes"], [
AC_MSG_ERROR([could not locate required libtirpc])
], [
--
2.20.1

View File

@ -1,42 +0,0 @@
From 61e57e73a6c63ad50825182ca80bc2a5fcb3e1e2 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Tue, 30 Jul 2019 17:25:46 +0200
Subject: [PATCH] quotacheck: Skip checking of filesystems with hidded quota
files early
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Currently when filesystem tracks quotas in hidden quota files (but is
also capable of tracking it in regular files), we scan the whole
filesystem and only after that find out we cannot actually make use of
newly created quota files. Just detect this case before scanning the fs
and skip it.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
quotacheck.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/quotacheck.c b/quotacheck.c
index 2cdf475..1311c10 100644
--- a/quotacheck.c
+++ b/quotacheck.c
@@ -1181,11 +1181,11 @@ static int check_all(void)
continue;
}
cfmt = fmt;
- if (uwant && me_hasquota(mnt, USRQUOTA))
+ if (uwant && me_hasquota(mnt, USRQUOTA) && mnt->me_qfmt[USRQUOTA] != QF_META)
ucheck = 1;
else
ucheck = 0;
- if (gwant && me_hasquota(mnt, GRPQUOTA))
+ if (gwant && me_hasquota(mnt, GRPQUOTA) && mnt->me_qfmt[GRPQUOTA] != QF_META)
gcheck = 1;
else
gcheck = 0;
--
2.21.0

View File

@ -1,68 +0,0 @@
From 7942290a0a6230fcc56eae42bf436e6eeca88777 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Fri, 24 May 2019 12:25:15 +0200
Subject: [PATCH 3/4] quotaops: Do not leak dquot structures on failure
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Some error paths in getprivs() were not properly freeing already fetched
structures. Free them properly in case of error.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
quotaops.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/quotaops.c b/quotaops.c
index 3d65490..e067d29 100644
--- a/quotaops.c
+++ b/quotaops.c
@@ -80,7 +80,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo
if (euid != id && euid != 0) {
uid2user(id, name);
errstr(_("%s (uid %d): Permission denied\n"), name, id);
- return (struct dquot *)NULL;
+ goto out_err;
}
break;
case GRPQUOTA:
@@ -92,7 +92,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo
if (!gidsetp) {
gid2group(id, name);
errstr(_("%s (gid %d): gid set allocation (%d): %s\n"), name, id, ngroups, strerror(errno));
- return (struct dquot *)NULL;
+ goto out_err;
}
}
else
@@ -103,7 +103,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo
free(gidsetp);
gid2group(id, name);
errstr(_("%s (gid %d): error while trying getgroups(): %s\n"), name, id, strerror(errno));
- return (struct dquot *)NULL;
+ goto out_err;
}
for (j = 0; j < ngroups; j++)
@@ -115,7 +115,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo
gid2group(id, name);
errstr(_("%s (gid %d): Permission denied\n"),
name, id);
- return (struct dquot *)NULL;
+ goto out_err;
}
break;
default:
@@ -134,6 +134,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo
id2name(id, handles[i]->qh_type, name);
errstr(_("error while getting quota from %s for %s (id %u): %s\n"),
handles[i]->qh_quotadev, name, id, strerror(olderrno));
+out_err:
freeprivs(qhead);
return NULL;
}
--
2.20.1

View File

@ -1,61 +0,0 @@
From e6decbfe6c44935584954ab01c8be2f5d02acf1b Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Fri, 24 May 2019 12:21:46 +0200
Subject: [PATCH 2/4] quotaops: Do not return partial list from getprivs()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When we failed to get some dquots from NFS server, we just reported
error, didn't include the dquot in the list built in getprivs() but
otherwise continued operation. Fail getprivs() in case of error instead
so that the failure propagates properly to the caller.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
quotaops.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/quotaops.c b/quotaops.c
index ad29fd9..3d65490 100644
--- a/quotaops.c
+++ b/quotaops.c
@@ -61,7 +61,7 @@ void update_grace_times(struct dquot *q)
/*
* Collect the requested quota information.
*/
-struct dquot *getprivs(qid_t id, struct quota_handle **handles, int quiet)
+struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquota)
{
struct dquot *q, *qtail = NULL, *qhead = NULL;
int i;
@@ -124,15 +124,18 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int quiet)
#endif
if (!(q = handles[i]->qh_ops->read_dquot(handles[i], id))) {
+ int olderrno = errno;
+
/* If rpc.rquotad is not running filesystem might be just without quotas... */
- if (!quiet || (errno != ENOENT && errno != ECONNREFUSED)) {
- int olderrno = errno;
+ if (ignore_noquota &&
+ (errno == ENOENT || errno == ECONNREFUSED))
+ continue;
- id2name(id, handles[i]->qh_type, name);
- errstr(_("error while getting quota from %s for %s (id %u): %s\n"),
- handles[i]->qh_quotadev, name, id, strerror(olderrno));
- }
- continue;
+ id2name(id, handles[i]->qh_type, name);
+ errstr(_("error while getting quota from %s for %s (id %u): %s\n"),
+ handles[i]->qh_quotadev, name, id, strerror(olderrno));
+ freeprivs(qhead);
+ return NULL;
}
if (qhead == NULL)
qhead = q;
--
2.20.1

View File

@ -1,32 +0,0 @@
From d9996b2b6b3cdcd41485804eabadbf576506c8fa Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Tue, 28 May 2019 16:39:22 +0200
Subject: [PATCH] quotaops: Make error string translatable
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Add forgotten translation quotes to the error string.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
quotaops.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/quotaops.c b/quotaops.c
index 16475e8..1a8d7fe 100644
--- a/quotaops.c
+++ b/quotaops.c
@@ -131,7 +131,7 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo
continue;
if (errno == ECONNREFUSED) {
- estr = "Cannot connect to RPC quota service";
+ estr = _("Cannot connect to RPC quota service");
} else {
estr = strerror(errno);
}
--
2.20.1

View File

@ -1,127 +0,0 @@
From 4cd287f3fa3838a31eb6636366f8ce26ee6e1425 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Tue, 28 May 2019 10:52:49 +0200
Subject: [PATCH] rpc: Clarify error message when cannot connect to rpc.rquotad
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Currently when RPC rquota service is not registered, we report somewhat
confusing "No such file of directory" error. For other errors when
creating rquota request we report "Connection refused". There's no big
difference for user between these errors and neither of them tells what
really happened. So just unify handling of these errors and report more
general error telling the user where the problem is.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
quotaops.c | 14 +++++++++-----
rquota_client.c | 14 --------------
2 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/quotaops.c b/quotaops.c
index e067d29..16475e8 100644
--- a/quotaops.c
+++ b/quotaops.c
@@ -124,16 +124,20 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo
#endif
if (!(q = handles[i]->qh_ops->read_dquot(handles[i], id))) {
- int olderrno = errno;
+ char *estr;
- /* If rpc.rquotad is not running filesystem might be just without quotas... */
- if (ignore_noquota &&
- (errno == ENOENT || errno == ECONNREFUSED))
+ /* If rpc.rquotad is not running, filesystem might be just without quotas... */
+ if (ignore_noquota && errno == ECONNREFUSED)
continue;
+ if (errno == ECONNREFUSED) {
+ estr = "Cannot connect to RPC quota service";
+ } else {
+ estr = strerror(errno);
+ }
id2name(id, handles[i]->qh_type, name);
errstr(_("error while getting quota from %s for %s (id %u): %s\n"),
- handles[i]->qh_quotadev, name, id, strerror(olderrno));
+ handles[i]->qh_quotadev, name, id, estr);
out_err:
freeprivs(qhead);
return NULL;
diff --git a/rquota_client.c b/rquota_client.c
index a3a4ae3..7f8e821 100644
--- a/rquota_client.c
+++ b/rquota_client.c
@@ -148,7 +148,6 @@ int rpc_rquota_get(struct dquot *dquot)
} args;
char *fsname_tmp, *host, *pathname;
struct timeval timeout = { 2, 0 };
- int rquotaprog_not_registered = 0;
int ret;
/*
@@ -210,8 +209,6 @@ int rpc_rquota_get(struct dquot *dquot)
}
else {
result = NULL;
- if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED)
- rquotaprog_not_registered = 1;
}
if (result == NULL || !result->status) {
@@ -251,16 +248,12 @@ int rpc_rquota_get(struct dquot *dquot)
clnt_destroy(clnt);
} else {
result = NULL;
- if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED)
- rquotaprog_not_registered = 1;
}
}
}
free(fsname_tmp);
if (result)
ret = result->status;
- else if (rquotaprog_not_registered)
- ret = Q_NOQUOTA;
else
ret = -1;
return rquota_err(ret);
@@ -280,7 +273,6 @@ int rpc_rquota_set(int qcmd, struct dquot *dquot)
} args;
char *fsname_tmp, *host, *pathname;
struct timeval timeout = { 2, 0 };
- int rquotaprog_not_registered = 0;
int ret;
/* RPC limits values to 32b variables. Prevent value wrapping. */
@@ -340,8 +332,6 @@ int rpc_rquota_set(int qcmd, struct dquot *dquot)
}
else {
result = NULL;
- if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED)
- rquotaprog_not_registered = 1;
}
if (result == NULL || !result->status) {
@@ -383,16 +373,12 @@ int rpc_rquota_set(int qcmd, struct dquot *dquot)
clnt_destroy(clnt);
} else {
result = NULL;
- if (rpc_createerr.cf_stat == RPC_PROGNOTREGISTERED)
- rquotaprog_not_registered = 1;
}
}
}
free(fsname_tmp);
if (result)
ret = result->status;
- else if (rquotaprog_not_registered)
- ret = Q_NOQUOTA;
else
ret = -1;
return rquota_err(ret);
--
2.20.1

View File

@ -1,73 +0,0 @@
From daba90fb6d9b8c8f1361457bf2bea7b18f4e35ec Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Fri, 24 May 2019 12:53:32 +0200
Subject: [PATCH 4/4] setquota: Report failure to obtain quota information
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
setquota currently silently ignored when it could not obtain quota
information to update and just skipped updating for the filesystem. Make
it report error and exit properly.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
setquota.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/setquota.c b/setquota.c
index 08fdbfc..993d920 100644
--- a/setquota.c
+++ b/setquota.c
@@ -315,8 +315,17 @@ static int setlimits(struct quota_handle **handles)
int ret = 0;
curprivs = getprivs(id, handles, !!(flags & FL_ALL));
+ if (!curprivs) {
+ errstr(_("Error getting quota information to update.\n"));
+ return -1;
+ }
if (flags & FL_PROTO) {
protoprivs = getprivs(protoid, handles, 0);
+ if (!protoprivs) {
+ errstr(_("Error getting prototype quota information.\n"));
+ ret = -1;
+ goto out;
+ }
for (q = curprivs, protoq = protoprivs; q && protoq; q = q->dq_next, protoq = protoq->dq_next) {
q->dq_dqb.dqb_bsoftlimit = protoq->dq_dqb.dqb_bsoftlimit;
q->dq_dqb.dqb_bhardlimit = protoq->dq_dqb.dqb_bhardlimit;
@@ -337,6 +346,7 @@ static int setlimits(struct quota_handle **handles)
}
if (putprivs(curprivs, COMMIT_LIMITS) == -1)
ret = -1;
+out:
freeprivs(curprivs);
return ret;
}
@@ -436,6 +446,10 @@ static int batch_setlimits(struct quota_handle **handles)
while (!read_entry(&id, &isoftlimit, &ihardlimit, &bsoftlimit, &bhardlimit)) {
curprivs = getprivs(id, handles, !!(flags & FL_ALL));
+ if (!curprivs) {
+ errstr(_("Error getting quota information to update.\n"));
+ return -1;
+ }
for (q = curprivs; q; q = q->dq_next) {
q->dq_dqb.dqb_bsoftlimit = bsoftlimit;
q->dq_dqb.dqb_bhardlimit = bhardlimit;
@@ -475,6 +489,10 @@ static int setindivgraces(struct quota_handle **handles)
struct dquot *q, *curprivs;
curprivs = getprivs(id, handles, !!(flags & FL_ALL));
+ if (!curprivs) {
+ errstr(_("Error getting quota information to update.\n"));
+ return -1;
+ }
for (q = curprivs; q; q = q->dq_next) {
if (q->dq_dqb.dqb_bsoftlimit && toqb(q->dq_dqb.dqb_curspace) > q->dq_dqb.dqb_bsoftlimit)
q->dq_dqb.dqb_btime = toset.dqb_btime;
--
2.20.1

View File

@ -1,34 +0,0 @@
From 662e9e93babc9be39bb2d6267ffe428703ca137e Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Thu, 12 Sep 2019 10:18:01 +0200
Subject: [PATCH] warnquota: Clarify that CC_TO gets resolved through LDAP
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Clarify that CC_TO field from warnquota.conf gets resolved through LDAP
lookup similarly to normal message recifient.
Signed-off-by: Jan Kara <jack@suse.cz>
Petr Písař: Ported to Fedora 32.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
warnquota.conf | 2 ++
1 file changed, 2 insertions(+)
diff --git a/warnquota.conf b/warnquota.conf
index 7e00947..34bfe53 100644
--- a/warnquota.conf
+++ b/warnquota.conf
@@ -8,6 +8,8 @@ MAIL_CMD = "/usr/sbin/sendmail -t"
FROM = "root@example.com"
# but they don't have to be:
SUBJECT = NOTE: You are exceeding your allocated disk space limits
+# Note that if LDAP is configured, the name in CC_TO gets looked up in LDAP
+# to obtain email address similarly to email recipient address.
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,
--
2.21.0

View File

@ -1,33 +0,0 @@
From 1ae10f8692981285ad52af9e9ae3e5f16201b187 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Mon, 12 Aug 2019 16:31:31 +0200
Subject: [PATCH] warnquota: Fix help text
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The help text was wrongly saying that -v is equivalent to --version.
It should be -V.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
warnquota.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/warnquota.c b/warnquota.c
index 5158094..606b7cc 100644
--- a/warnquota.c
+++ b/warnquota.c
@@ -1042,7 +1042,7 @@ static void usage(void)
-q, --quota-tab=quotatab-file non-default quotatab\n\
-a, --admins-file=admins-file non-default admins file\n\
-h, --help display this help message and exit\n\
--v, --version display version information and exit\n\n"));
+-V, --version display version information and exit\n\n"));
errstr(_("Bugs to %s\n"), PACKAGE_BUGREPORT);
wc_exit(1);
}
--
2.21.0

View File

@ -1,36 +0,0 @@
From a543b200cdd1e798383cc1070e51ad13ff424543 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Tue, 5 Nov 2019 12:11:14 +0100
Subject: [PATCH] warnquota: Free LDAP error message
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
ldap_get_option(3) documents that a pointer set by
LDAP_OPT_DIAGNOSTIC_MESSAGE must be freed with ldap_memfree(3).
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
warnquota.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/warnquota.c b/warnquota.c
index d54b4c1..f6b42d5 100644
--- a/warnquota.c
+++ b/warnquota.c
@@ -190,8 +190,11 @@ static void print_ldap_error(int err, char *prefix)
sstrncat(outbuf, ": %s\n", LDAP_ERR_BUF_SIZE);
errstr(outbuf, ldap_err2string(err));
ldap_get_option(ldapconn, LDAP_OPT_DIAGNOSTIC_MESSAGE, (void *)&msg);
- if (msg && strcmp(msg, ""))
+ if (msg) {
+ if (strcmp(msg, ""))
errstr(_("Additional error info: %s\n"), msg);
+ ldap_memfree(msg);
+ }
}
static int setup_ldap(struct configparams *config)
--
2.21.0

View File

@ -1,61 +0,0 @@
From 50c3f30d610ed9979a1291422e8641e05f881212 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Tue, 5 Nov 2019 14:20:46 +0100
Subject: [PATCH] warnquota: Initialize all members of a configparams structure
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Running warnquota under valgrind reported many "Conditional jump or
move depends on uninitialised value" mistakes because readconfigfile()
did not initizalize ldap_bindpw member if some of the configuration
options were missing from the configuration file.
This patch simply initializes all bytes of the configparams structure
to 0 instead of settting each of the members explicitly.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
warnquota.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/warnquota.c b/warnquota.c
index f6b42d5..2882fee 100644
--- a/warnquota.c
+++ b/warnquota.c
@@ -759,13 +759,13 @@ static int readconfigfile(const char *filename, struct configparams *config)
char *locale;
/* set default values */
+ memset(config, 0, sizeof(*config));
sstrncpy(config->mail_cmd, MAIL_CMD, CNF_BUFFER);
sstrncpy(config->from, FROM, CNF_BUFFER);
sstrncpy(config->subject, SUBJECT, CNF_BUFFER);
sstrncpy(config->cc_to, CC_TO, CNF_BUFFER);
sstrncpy(config->support, SUPPORT, CNF_BUFFER);
sstrncpy(config->phone, PHONE, CNF_BUFFER);
- (config->charset)[0] = '\0';
setlocale(LC_ALL, NULL);
locale = setlocale(LC_MESSAGES, NULL);
#ifdef HAVE_NL_LANGINFO
@@ -775,17 +775,11 @@ static int readconfigfile(const char *filename, struct configparams *config)
}
#endif
maildev[0] = 0;
- config->user_signature = config->user_message = config->group_signature = config->group_message = NULL;
config->cc_before = -1;
#ifdef USE_LDAP_MAIL_LOOKUP
- config->use_ldap_mail = 0;
- config->ldap_starttls = 0;
config->ldap_tls = LDAP_OPT_X_TLS_NEVER;
config->ldap_vers = LDAP_VERSION3;
- config->ldap_port = config->ldap_is_setup = 0;
- config->ldap_host[0] = 0;
- config->ldap_uri[0] = 0;
#endif
if (!(fp = fopen(filename, "r"))) {
--
2.21.0

View File

@ -1,82 +0,0 @@
From 52ead0d37dcbce59338dcb765527712c9ee656e1 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Thu, 12 Sep 2019 10:06:38 +0200
Subject: [PATCH] warnquota: Print also additional error info for LDAP errors
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
LDAP library provides additional error information in some cases. Print
it make debugging LDAP setup easier.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
warnquota.c | 26 +++++++++++++++++++++-----
1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/warnquota.c b/warnquota.c
index 24d7410..d54b4c1 100644
--- a/warnquota.c
+++ b/warnquota.c
@@ -178,6 +178,22 @@ static void wc_exit(int ex_stat)
}
#ifdef USE_LDAP_MAIL_LOOKUP
+
+#define LDAP_ERR_BUF_SIZE 1024
+
+static void print_ldap_error(int err, char *prefix)
+{
+ char *msg = NULL;
+ char outbuf[LDAP_ERR_BUF_SIZE];
+
+ sstrncpy(outbuf, prefix, LDAP_ERR_BUF_SIZE);
+ sstrncat(outbuf, ": %s\n", LDAP_ERR_BUF_SIZE);
+ errstr(outbuf, ldap_err2string(err));
+ ldap_get_option(ldapconn, LDAP_OPT_DIAGNOSTIC_MESSAGE, (void *)&msg);
+ if (msg && strcmp(msg, ""))
+ errstr(_("Additional error info: %s\n"), msg);
+}
+
static int setup_ldap(struct configparams *config)
{
int ret;
@@ -187,7 +203,7 @@ static int setup_ldap(struct configparams *config)
ret = ldap_initialize(&ldapconn, config->ldap_uri);
if (ret != LDAP_SUCCESS) {
- errstr(_("ldap_initialize() failed: %s\n"), ldap_err2string(ret));
+ print_ldap_error(ret, _("ldap_initialize() failed"));
return -1;
}
@@ -196,13 +212,13 @@ static int setup_ldap(struct configparams *config)
ldap_set_option(ldapconn, LDAP_OPT_X_TLS_REQUIRE_CERT, &(config->ldap_tls));
ret = ldap_start_tls_s(ldapconn, NULL, NULL);
if (ret != LDAP_SUCCESS) {
- errstr(_("ldap_start_tls_s() failed: %s\n"), ldap_err2string(ret));
- return -1;
+ print_ldap_error(ret, _("ldap_start_tls_s() failed"));
+ return -1;
}
}
ret = ldap_sasl_bind_s(ldapconn, config->ldap_binddn, LDAP_SASL_SIMPLE, &cred, NULL, NULL, NULL);
if (ret != LDAP_SUCCESS) {
- errstr(_("ldap_sasl_bind_s() failed: %s\n"), ldap_err2string(ret));
+ print_ldap_error(ret, _("ldap_sasl_bind_s() failed"));
return -1;
}
return 0;
@@ -428,7 +444,7 @@ static char *lookup_user(struct configparams *config, char *user)
if (ret != LDAP_SUCCESS) {
errstr(_("Error with %s.\n"), user);
- errstr(_("ldap_search_ext_s() failed: %s\n"), ldap_err2string(ret));
+ print_ldap_error(ret, _("ldap_search_ext_s() failed"));
return NULL;
}
--
2.21.0

View File

@ -1,42 +0,0 @@
From 3615f3ec7dd3c867a8394640c0fc4736189315df Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Thu, 5 Sep 2019 16:29:08 +0200
Subject: [PATCH] warnquota: Properly detect LDAP errors
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
ldap_search_ext_s() and ldap_sasl_bind_s() can return also positive
error result codes. Catch them properly.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
warnquota.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/warnquota.c b/warnquota.c
index 53da671..24d7410 100644
--- a/warnquota.c
+++ b/warnquota.c
@@ -201,7 +201,7 @@ static int setup_ldap(struct configparams *config)
}
}
ret = ldap_sasl_bind_s(ldapconn, config->ldap_binddn, LDAP_SASL_SIMPLE, &cred, NULL, NULL, NULL);
- if(ret < 0) {
+ if (ret != LDAP_SUCCESS) {
errstr(_("ldap_sasl_bind_s() failed: %s\n"), ldap_err2string(ret));
return -1;
}
@@ -426,7 +426,7 @@ static char *lookup_user(struct configparams *config, char *user)
searchbuf, NULL, 0, NULL, NULL, NULL,
0, &result);
- if (ret < 0) {
+ if (ret != LDAP_SUCCESS) {
errstr(_("Error with %s.\n"), user);
errstr(_("ldap_search_ext_s() failed: %s\n"), ldap_err2string(ret));
return NULL;
--
2.21.0

View File

@ -0,0 +1,43 @@
From 1959f3768a284315250acd4d17a9f5ef0b8ea189 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Mon, 30 Nov 2020 16:35:26 +0100
Subject: [PATCH] Drop sys/cdefs.h usage
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
quota.h header includes sys/cdefs.h because it uses __P() macro in
quotactl syscall declaration. However glibc currently defines __P() is
nop and it only causes issues with other libc implementations (e.g. musl
libc). So just drop __P() usage and sys/cdefs.h include.
Reported-by: 2xsaiko <git@dblsaiko.net>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
quota.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/quota.h b/quota.h
index 4c21411..845cbbd 100644
--- a/quota.h
+++ b/quota.h
@@ -1,7 +1,6 @@
#ifndef GUARD_QUOTA_H
#define GUARD_QUOTA_H
-#include <sys/cdefs.h>
#include <sys/types.h>
#include <stdint.h>
@@ -182,6 +181,6 @@ enum {
#endif
#endif
-long quotactl __P((int, const char *, qid_t, caddr_t));
+long quotactl(int, const char *, qid_t, caddr_t);
#endif /* _QUOTA_ */
--
2.26.2

View File

@ -0,0 +1,43 @@
From b0f95e3954f85d97a99f8a08645418945484dbca Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
Date: Wed, 1 Sep 2021 08:00:00 +0000
Subject: [PATCH 2/3] common.c: fix strncat usage
When quota is configured using --enable-werror, gcc -flto fails with
the following diagnostics:
In function 'strncat',
inlined from 'sstrncat' at common.c:113:2,
inlined from 'get_proc_num' at quotastats.c:46:2:
/usr/include/bits/string_fortified.h:122:10: error: '__builtin___strncat_chk' specified bound 4096 equals destination size [-Werror=str
ingop-overflow=]
122 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
| ^
This diagnostics is correct: when "src" contains "len" or more bytes,
strncat() writes "len"+1 bytes to "dest" ("len" from "src" plus
the terminating null byte).
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Jan Kara <jack@suse.cz>
---
common.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/common.c b/common.c
index 8be0428..b3e5ad2 100644
--- a/common.c
+++ b/common.c
@@ -110,8 +110,7 @@ void sstrncpy(char *d, const char *s, size_t len)
void sstrncat(char *d, const char *s, size_t len)
{
- strncat(d, s, len);
- d[len - 1] = 0;
+ strncat(d, s, len - 1);
}
char *sstrdup(const char *s)
--
2.31.1

View File

@ -0,0 +1,34 @@
From 25f16b1de313ce0d411f754572f94f051bfbe3c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Tue, 16 Mar 2021 17:28:15 +0100
Subject: [PATCH] quota_nld: Initialize sa_mask when registering PID file
removal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
term_action.sa_mask is an automatic variable and and thus unitialized.
This patch empties the signal mask.
Signed-off-by: Petr Písař <ppisar@redhat.com>
Signed-off-by: Jan Kara <jack@suse.cz>
---
quota_nld.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/quota_nld.c b/quota_nld.c
index 72d99a9..09c4775 100644
--- a/quota_nld.c
+++ b/quota_nld.c
@@ -466,7 +466,7 @@ static void use_pid_file(void)
term_action.sa_handler = remove_pid;
term_action.sa_flags = 0;
- if (sigaction(SIGTERM, &term_action, NULL))
+ if (sigemptyset(&term_action.sa_mask) || sigaction(SIGTERM, &term_action, NULL))
errstr(_("Could not register PID file removal on SIGTERM.\n"));
if (store_pid())
errstr(_("Could not store my PID %jd.\n"), (intmax_t )getpid());
--
2.26.3

View File

@ -0,0 +1,32 @@
From 55f1a0604bd4df6d591674b5bef123be1af84e55 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Fri, 20 Nov 2020 15:28:49 +0100
Subject: [PATCH] quotacheck: Remove a dead code from process_file()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The ret variable inicialization is useless because it is assigned in
all (two) subsequent code branches.
Signed-off-by: Petr Písař <ppisar@redhat.com>
Signed-off-by: Jan Kara <jack@suse.cz>
---
quotacheck.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/quotacheck.c b/quotacheck.c
index 5810ced..1b81610 100644
--- a/quotacheck.c
+++ b/quotacheck.c
@@ -672,7 +672,6 @@ Please turn quotas off or use -f to force checking.\n"),
}
}
- ret = 0;
memset(old_info + type, 0, sizeof(old_info[type]));
if (is_tree_qfmt(cfmt))
ret = v2_buffer_file(qfname, fd, type, cfmt);
--
2.26.2

View File

@ -0,0 +1,68 @@
From 100b8a8814152ca6f52564cb65f33bf7cf033c22 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Fri, 20 Aug 2021 21:51:05 +0200
Subject: [PATCH 1/3] quotacheck, quotaon: Always display message about
deprecated usage
Visible quota files on ext4 filesystem are deprecated. Make sure we
always display the warning message and also expand the message to
explain how the filesystem can be converted.
Signed-off-by: Jan Kara <jack@suse.cz>
---
quotacheck.c | 7 +++++--
quotaon.c | 7 ++++---
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/quotacheck.c b/quotacheck.c
index 1b81610..bd62d9a 100644
--- a/quotacheck.c
+++ b/quotacheck.c
@@ -1198,7 +1198,7 @@ static int check_all(void)
debug(FL_DEBUG, _("Detected quota format %s\n"), fmt2name(cfmt));
}
- if (flags & (FL_VERBOSE | FL_DEBUG) && !warned) {
+ if (!warned) {
if (!strcmp(mnt->me_type, MNTTYPE_EXT4) &&
ext4_supports_quota_feature()) {
warned = 1;
@@ -1207,7 +1207,10 @@ static int check_all(void)
"external quota files. Please switch "
"your filesystem to use ext4 quota "
"feature as external quota files on "
- "ext4 are deprecated.\n"));
+ "ext4 are deprecated. You can enable "
+ "the feature by unmounting the file "
+ "system and running 'tune2fs -O quota "
+ "<device>'.\n"));
} else if (!str_hasmntopt(mnt->me_opts, MNTOPT_USRJQUOTA) &&
!str_hasmntopt(mnt->me_opts, MNTOPT_GRPJQUOTA) &&
(!strcmp(mnt->me_type, MNTTYPE_EXT3) ||
diff --git a/quotaon.c b/quotaon.c
index aceb6ec..125b934 100644
--- a/quotaon.c
+++ b/quotaon.c
@@ -270,15 +270,16 @@ static int newstate(struct mount_entry *mnt, int type, char *extra)
if (!me_hasquota(mnt, type))
return 0;
- if (flags & FL_VERBOSE && !warned &&
- !strcmp(mnt->me_type, MNTTYPE_EXT4) &&
+ if (!warned && !strcmp(mnt->me_type, MNTTYPE_EXT4) &&
ext4_supports_quota_feature()) {
warned = 1;
errstr(_("Your kernel probably supports ext4 quota "
"feature but you are using external quota "
"files. Please switch your filesystem to use "
"ext4 quota feature as external quota files "
- "on ext4 are deprecated.\n"));
+ "on ext4 are deprecated. You can enable the "
+ "feature by unmounting the file system and "
+ "running 'tune2fs -O quota <device>'.\n"));
}
if (fmt == -1) {
if (get_qf_name(mnt, type, QF_VFSV0,
--
2.31.1

View File

@ -0,0 +1,72 @@
From 43b6e31f39edbe7de4f4feeef4d0cf6be093e021 Mon Sep 17 00:00:00 2001
From: Jan Kara <jack@suse.cz>
Date: Mon, 23 Nov 2020 17:12:27 +0100
Subject: [PATCH] quotaio_xfs: Warn when large kernel timestamps cannot be
handled
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When time_t is 32-bit, warn if the kernel returns anything that cannot
fit in these time stamps. This also fixes a compilation warning that
shift exceeds data type size. Similarly when converting data to pass to
kernel, just avoid the pointless shift (generating compiler warning)
when time_t is 32-bit.
Reported-by: "Dmitry V. Levin" <ldv@altlinux.org>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
configure.ac | 2 ++
quotaio_xfs.c | 9 +++++++++
2 files changed, 11 insertions(+)
diff --git a/configure.ac b/configure.ac
index 2239b49..296b77a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -82,6 +82,8 @@ AS_IF([test x"$enable_werror" != "xno"], [
])
AC_SUBST([WARN_CFLAGS])
+AC_CHECK_SIZEOF([time_t], [], [#include <time.h>])
+
# =========
# Find ldap
# =========
diff --git a/quotaio_xfs.c b/quotaio_xfs.c
index 2db1c0c..5abb2c2 100644
--- a/quotaio_xfs.c
+++ b/quotaio_xfs.c
@@ -45,8 +45,13 @@ report: xfs_report
static inline time_t xfs_kern2utildqblk_ts(const struct xfs_kern_dqblk *k,
__s32 timer, __s8 timer_hi)
{
+#if SIZEOF_TIME_T > 4
if (k->d_fieldmask & FS_DQ_BIGTIME)
return (__u32)timer | (__s64)timer_hi << 32;
+#else
+ if (k->d_fieldmask & FS_DQ_BIGTIME && timer_hi != 0)
+ errstr(_("Truncating kernel returned time stamp."));
+#endif
return timer;
}
@@ -54,10 +59,14 @@ static inline void xfs_util2kerndqblk_ts(const struct xfs_kern_dqblk *k,
__s32 *timer_lo, __s8 *timer_hi, time_t timer)
{
*timer_lo = timer;
+#if SIZEOF_TIME_T > 4
if (k->d_fieldmask & FS_DQ_BIGTIME)
*timer_hi = timer >> 32;
else
*timer_hi = 0;
+#else
+ *timer_hi = 0;
+#endif
}
static inline int want_bigtime(time_t timer)
--
2.26.2

View File

@ -0,0 +1,39 @@
From 8a3321627bb9215ed40f8f7036a1e86bcaf10ad1 Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
Date: Sun, 22 Nov 2020 08:00:00 +0000
Subject: [PATCH] quotaops: fix compilation warning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When quota is configured using --enable-werror --disable-bsd_behaviour,
the compilation fails with the following diagnostics:
quotaops.c: In function 'getprivs':
quotaops.c:143:1: error: label 'out_err' defined but not used [-Werror=unused-label]
Fixes: 7942290a ("quotaops: Do not leak dquot structures on failure")
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
quotaops.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/quotaops.c b/quotaops.c
index ff4d16e..96086f4 100644
--- a/quotaops.c
+++ b/quotaops.c
@@ -140,7 +140,9 @@ struct dquot *getprivs(qid_t id, struct quota_handle **handles, int ignore_noquo
id2name(id, handles[i]->qh_type, name);
errstr(_("error while getting quota from %s for %s (id %u): %s\n"),
handles[i]->qh_quotadev, name, id, estr);
+#if defined(BSD_BEHAVIOUR)
out_err:
+#endif
freeprivs(qhead);
return NULL;
}
--
2.26.2

View File

@ -0,0 +1,46 @@
From d2256ac2d44b0a5be9c0b49ce4ce8e5f6821ce2a Mon Sep 17 00:00:00 2001
From: "Dmitry V. Levin" <ldv@altlinux.org>
Date: Wed, 1 Sep 2021 08:00:00 +0000
Subject: [PATCH 3/3] quotasys.c: fix strncpy usage
When quota is configured using --enable-werror, gcc -flto fails with
the following diagnostics:
In function 'strncpy',
inlined from 'sstrncpy' at common.c:107:2,
inlined from 'copy_mntoptarg' at quotasys.c:774:3,
inlined from 'copy_mntoptarg' at quotasys.c:769:13:
/usr/include/bits/string_fortified.h:91:10: error: '__builtin_strncpy' specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
91 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^
quotasys.c: In function 'copy_mntoptarg':
quotasys.c:774:25: note: length computed here
774 | sstrncpy(buf, optarg, min(buflen, strlen(optarg) + 1));
| ^
This diagnostics is correct: strcpy() copies at most "len" bytes of the string
pointed to by "src", including the terminating null byte, to the buffer
pointed to by "dest".
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Jan Kara <jack@suse.cz>
---
quotasys.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/quotasys.c b/quotasys.c
index 885fb1f..3f50e32 100644
--- a/quotasys.c
+++ b/quotasys.c
@@ -771,7 +771,7 @@ static void copy_mntoptarg(char *buf, const char *optarg, int buflen)
char *sep = strchr(optarg, ',');
if (!sep)
- sstrncpy(buf, optarg, min(buflen, strlen(optarg) + 1));
+ sstrncpy(buf, optarg, buflen);
else
sstrncpy(buf, optarg, min(buflen, sep - optarg + 1));
}
--
2.31.1

View File

@ -1,4 +1,4 @@
From 67a0dbf6434552e720b0d311597553b3a76f779e Mon Sep 17 00:00:00 2001
From 6400cf65afed09c63d96cc62b1e7eee964bdb6cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Tue, 23 Aug 2011 13:45:15 +0200
Subject: [PATCH] warnquota configuration tunes
@ -8,19 +8,20 @@ Content-Transfer-Encoding: 8bit
Rest of changes (378a64006bb1e818e84a1c77808563b802b028fa) not
accepted by upstream (we had root@... addresses and more enterprise
wordings usually there).
wordings usually there). Later improved by the upstream in
0efb2331f1c39c9665fb6e92e83c7d080b877de1.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
warnquota.c | 2 +-
warnquota.conf | 17 ++++++++---------
2 files changed, 9 insertions(+), 10 deletions(-)
warnquota.conf | 16 ++++++++--------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/warnquota.c b/warnquota.c
index 0d911e4..2c8e084 100644
index 2882fee..48d79c0 100644
--- a/warnquota.c
+++ b/warnquota.c
@@ -837,7 +837,7 @@ cc_parse_err:
@@ -883,7 +883,7 @@ cc_parse_err:
}
#ifdef USE_LDAP_MAIL_LOOKUP
else if (!strcmp(var, "LDAP_MAIL")) {
@ -30,33 +31,36 @@ index 0d911e4..2c8e084 100644
else
config->use_ldap_mail = 0;
diff --git a/warnquota.conf b/warnquota.conf
index b06f81f..7e00947 100644
index 5bbd0ab..366c3e0 100644
--- a/warnquota.conf
+++ b/warnquota.conf
@@ -4,17 +4,16 @@
# and even blank lines
@@ -19,20 +19,20 @@ FAIL = "configure /etc/warnquota.conf before running warnquota"
#
# command used for sending mails
#
-MAIL_CMD = "/usr/lib/sendmail -t"
+MAIL_CMD = "/usr/sbin/sendmail -t"
# 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
#
# Standard mail fields
-FROM = "root@localhost"
-SUBJECT = "Your account quota has exceeded!"
+FROM = "root@example.com"
+SUBJECT = "You are exceeding your allocated disk space limits"
# Note that if LDAP is configured, the name in CC_TO gets looked up in LDAP
# to obtain email address similarly to email recipient address.
-CC_TO = "root@localhost"
+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@localhost"
+SUPPORT = "root@example.com"
PHONE = "(123) 456-1111 or (222) 333-4444"
PHONE = "123 456 789"
# 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"
@@ -40,11 +40,11 @@ PHONE = "123 456 789"
# 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.
@ -72,5 +76,5 @@ index b06f81f..7e00947 100644
GROUP_MESSAGE = Hello,|\
your group %i is using too much disk space at %h.|\
--
2.13.5
2.25.4

View File

@ -1,6 +1,6 @@
{
"Signatures": {
"quota-4.05.tar.gz": "ef3b5b5d1014ed1344b46c1826145e20cbef8db967b522403c9a060761cf7ab9",
"quota-4.06.tar.gz": "2f3e03039f378d4f0d97acdb49daf581dcaad64d2e1ddf129495fd579fbd268d",
"quota_nld.service": "95235d6fe245ffe3802956036210ca30d5ef5544e1537df9c536dc0f41e6aa95",
"quota_nld.sysconfig": "3947079eed442d61d5c3447c9908cc672d600940dbf8f8dd2bffee6c2f5967eb",
"rpc-rquotad.service": "b02f388201740d1736be0e6fb92efa9afce027c5887b0da0b9f710d05df73648",

View File

@ -1,23 +1,22 @@
# Scan ext file systems directly to increase performace of a quota
# Scan ext file systems directly to increase the performace of a quota
# initialization and check
%bcond_without quota_enables_extdirect
# Use netlink to monitor quota usage and warn interactive users
%bcond_without quota_enables_netlink
# Enable getting quotas over remotely
# Enable getting quotas remotely over network
%bcond_without quota_enables_rpc
# Allow setting quota remotely
# Allow setting quota remotely over network
%bcond_without quota_enables_rpcsetquota
# Disable TCP Wrappers guard in RPC quota daemon
# Disable TCP Wrappers guard in the RPC quota daemon
%bcond_with quota_enables_tcpwrappers
Name: quota
Version: 4.05
Release: 12%{?dist}
Version: 4.06
Release: 1%{?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, edquota.c: BSD
# COPYING: GPLv2 text and license declaration
# COPYING: GPLv2 text and a license declaration
## Only in quota-rpc binary package
# rquota_server.c: GPLv2+
## Only in quota-rpc and quota-nls binary packages
@ -48,61 +47,36 @@ Summary: System administration tools for monitoring users' disk usage
# Makefile.in: FSFULLR
# missing: GPLv2+ with exception
# mkinstalldirs: Public Domain
License: BSD and GPLv2 and GPLv2+
License: GPLv2 and GPLv2+
Vendor: Microsoft Corporation
Distribution: Mariner
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
# Fix modifying CFLAGS and LDFLAGS by pkgconfig, in upstream after 4.05
Patch2: quota-4.05-Revert-configure.ac-fix-pkg_check_modules-calls.patch
# 1/6 Report an error if an RPC fails on an explicitly requested file system,
# <https://sourceforge.net/p/linuxquota/bugs/134/>, in upstream after 4.05
Patch3: quota-4.05-Make-messages-about-failures-for-NFS-consistent-with.patch
# 2/6
Patch4: quota-4.05-quotaops-Do-not-return-partial-list-from-getprivs.patch
# 3/6
Patch5: quota-4.05-quotaops-Do-not-leak-dquot-structures-on-failure.patch
# 4/6
Patch6: quota-4.05-setquota-Report-failure-to-obtain-quota-information.patch
# 5/6
Patch7: quota-4.05-rpc-Clarify-error-message-when-cannot-connect-to-rpc.patch
# 6/6
Patch8: quota-4.05-quotaops-Make-error-string-translatable.patch
# Fix Free Software Foundation's postal address,
# <https://sourceforge.net/p/linuxquota/bugs/133/>, in upstream after 4.05
Patch9: quota-4.05-COPYING-Update-mailing-address.patch
# Move quota_nld.pid file to /run,
# <https://sourceforge.net/p/linuxquota/patches/49/>, in upstream after 4.05
Patch10: quota-4.05-Make-a-directory-for-quota_nld-PID-file-configurable.patch
# Optimize out useless checking of file systems with hidden quota files,
# in upstream after 4.05
Patch11: quota-4.05-quotacheck-Skip-checking-of-filesystems-with-hidded-.patch
# Fix warnquota --help output, in upstream after 4.05
Patch12: quota-4.05-warnquota-Fix-help-text.patch
# Fix checking for the LDAP failures in the warnquota tool,
# in upstream after 4.05
Patch13: quota-4.05-warnquota-Properly-detect-LDAP-errors.patch
# 1/2 Report detailed LDAP failures, in upstream after 4.05
Patch14: quota-4.05-warnquota-Print-also-additional-error-info-for-LDAP-.patch
# 2/2 Report detailed LDAP failures, in upstream after 4.05,
# <https://sourceforge.net/p/linuxquota/patches/50/>
Patch15: quota-4.05-warnquota-Free-LDAP-error-message.patch
# Document CC_TO in warquota.conf is looked up with LDAP,
# in upstream after 4.05
Patch16: quota-4.05-warnquota-Clarify-that-CC_TO-gets-resolved-through-L.patch
# Initialize all members of a configparams structure in warnquota,
# in upstream after 4.05, <https://sourceforge.net/p/linuxquota/patches/51/>
Patch17: quota-4.05-warnquota-Initialize-all-members-of-a-configparams-s.patch
# Fix ignoring disabled quotas, bug #1805110, proposed to upstream,
# <https://sourceforge.net/p/linuxquota/bugs/136/>
Patch18: quota-4.05-Fix-ignoring-disabled-quotas.patch
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), bug #680919
Patch0: quota-4.06-warnquota-configuration-tunes.patch
# Fix parsing a TCP port number
Patch1: quota-4.03-Validate-upper-bound-of-RPC-port.patch
# Remove a dead code from process_file(), in upstream after 4.06,
# <https://sourceforge.net/p/linuxquota/patches/54/>
Patch2: quota-4.06-quotacheck-Remove-a-dead-code-from-process_file.patch
# Fix a compilation warning in quotaops.c, in upstream after 4.06
Patch3: quota-4.06-quotaops-fix-compilation-warning.patch
# Warn when kernel XFS large time stamp does fit into (32-bit) user-space
# time_t, in upstream after 4.06
Patch4: quota-4.06-quotaio_xfs-Warn-when-large-kernel-timestamps-cannot.patch
# Do not use a pointless compiler-internal __P() macro, in upstream after 4.06
Patch5: quota-4.06-Drop-sys-cdefs.h-usage.patch
# Fix sa_mask initialization when registering PID file removal,
# upstream bug #141, in upstream after 4.06
Patch6: quota-4.06-quota_nld-Initialize-sa_mask-when-registering-PID-fi.patch
Patch7: quota-4.06-quotacheck-quotaon-Always-display-message-about-depr.patch
Patch8: quota-4.06-common.c-fix-strncat-usage.patch
Patch9: quota-4.06-quotasys.c-fix-strncpy-usage.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bash
@ -120,6 +94,7 @@ BuildRequires: pkgconfig(ext2fs)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(libnl-3.0) >= 3.1
BuildRequires: pkgconfig(libnl-genl-3.0)
BuildRequires: systemd
%endif
%if %{with quota_enables_rpc}
BuildRequires: rpcgen
@ -142,9 +117,8 @@ and limiting user and or group disk usage per file system.
Summary: quota_nld daemon
License: GPLv2 and GPLv2+
Requires: quota-nls = %{version}-%{release}
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
# For %%{_unitdir} directory
Requires: systemd
%description nld
Daemon that listens on netlink socket and processes received quota warnings.
@ -161,12 +135,11 @@ Summary: RPC quota daemon
License: LGPLv2+ and GPLv2 and GPLv2+
Requires: quota-nls = %{version}-%{release}
Requires: rpcbind
# For %%{_unitdir} directory
Requires: systemd
%if %{with quota_enables_tcpwrappers}
Requires: tcp_wrappers
%endif
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%description rpc
The RPC daemon allows to query and set disk quotas over network. If you run
@ -188,7 +161,7 @@ via cron(8).
%package nls
Summary: Gettext catalogs for disk quota tools
License: BSD and LGPLv2+ and GPLv2 and GPLv2+
License: LGPLv2+ and GPLv2 and GPLv2+
BuildArch: noarch
%description nls
@ -199,6 +172,8 @@ Disk quota tools messages translated into different natural languages.
%package devel
Summary: Development files for quota RPC
License: GPLv2
# libtirpc-devel for an included <rpc/rpc.h>
Requires: libtirpc-devel
# 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.
@ -220,26 +195,7 @@ 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
%patch16 -p1
%patch17 -p1
%patch18 -p1
%autosetup -p1
# Regenerate build scripts
autoreconf -f -i
@ -389,6 +345,9 @@ make check
%changelog
* Fri May 13 2022 Chris Co <chrco@microsoft.com> 4.06-1
- Update to 4.06 (Imported from Fedora 36, license: MIT)
* Fri Feb 04 2022 Pawel Winogrodzki <pawelwi@microsoft.com> - 4.05-12
- Removing 'Conflicts' on an older package never present in CBL-Mariner.
- License verified.

View File

@ -22454,8 +22454,8 @@
"type": "other",
"other": {
"name": "quota",
"version": "4.05",
"downloadUrl": "http://downloads.sourceforge.net/linuxquota/quota-4.05.tar.gz"
"version": "4.06",
"downloadUrl": "http://downloads.sourceforge.net/linuxquota/quota-4.06.tar.gz"
}
}
},