Blame SOURCES/quota-4.04-repquota-Fix-output-when-user-2-exists.patch

273bc0
From 1806ee01060d363beac01fda28c613ab27dbc4df Mon Sep 17 00:00:00 2001
273bc0
From: Jan Kara <jack@suse.cz>
273bc0
Date: Wed, 10 Jan 2018 10:18:43 +0100
273bc0
Subject: [PATCH] repquota: Fix output when user -2 exists
273bc0
MIME-Version: 1.0
273bc0
Content-Type: text/plain; charset=UTF-8
273bc0
Content-Transfer-Encoding: 8bit
273bc0
273bc0
Vladimit Meshkov reported that when user -2 exists and user namespaces
273bc0
are enabled in the kernel, repquota(8) fails to output anything. He also
273bc0
analyzed this is because in such case repquota(8) tries to query info
273bc0
for user -1 which is invalid ID, gets error from the kernel, and bails
273bc0
out.
273bc0
273bc0
Fix the problem by stopping iteration over IDs when we reach ID -1.
273bc0
273bc0
Reported-by: Vladimir Meshkov <ubob74@gmail.com>
273bc0
Signed-off-by: Jan Kara <jack@suse.cz>
273bc0
Signed-off-by: Petr Písař <ppisar@redhat.com>
273bc0
---
273bc0
 quotaio_generic.c | 5 +++++
273bc0
 quotaio_xfs.c     | 5 +++++
273bc0
 2 files changed, 10 insertions(+)
273bc0
273bc0
diff --git a/quotaio_generic.c b/quotaio_generic.c
273bc0
index 025d712..5b23955 100644
273bc0
--- a/quotaio_generic.c
273bc0
+++ b/quotaio_generic.c
273bc0
@@ -204,6 +204,11 @@ int vfs_scan_dquots(struct quota_handle *h,
273bc0
 		if (ret < 0)
273bc0
 			break;
273bc0
 		id = kdqblk.dqb_id + 1;
273bc0
+		/* id -1 is invalid and the last one... */
273bc0
+		if (id == -1) {
273bc0
+			errno = ENOENT;
273bc0
+			break;
273bc0
+		}
273bc0
 	}
273bc0
 	free(dquot);
273bc0
 
273bc0
diff --git a/quotaio_xfs.c b/quotaio_xfs.c
273bc0
index 1374cf4..56daf89 100644
273bc0
--- a/quotaio_xfs.c
273bc0
+++ b/quotaio_xfs.c
273bc0
@@ -219,6 +219,11 @@ static int xfs_kernel_scan_dquots(struct quota_handle *h,
273bc0
 		if (ret < 0)
273bc0
 			break;
273bc0
 		id = xdqblk.d_id + 1;
273bc0
+		/* id -1 is invalid and the last one... */
273bc0
+		if (id == -1) {
273bc0
+			errno = ENOENT;
273bc0
+			break;
273bc0
+		}
273bc0
 	}
273bc0
 	free(dquot);
273bc0
 
273bc0
-- 
273bc0
2.13.6
273bc0