All of lore.kernel.org
 help / color / mirror / Atom feed
From: rjohnston@sgi.com
To: xfs@oss.sgi.com
Cc: Eric Sandeen <sandeen@redhat.com>,
	Chandra Seetharaman <sekharan@us.ibm.com>,
	Dave Chinner <dchinner@redhat.com>
Subject: [PATCH V3] xfsprogs: xfs_quota allow user or group names beginning with
Date: Mon, 22 Apr 2013 12:32:05 -0500	[thread overview]
Message-ID: <20130422173205.877894469@sgi.com> (raw)

[-- Attachment #1: V3-xfsprogs-xfs_quota-allow-user-or-group-names-beginning-with-digits.patch digits --]
[-- Type: text/plain, Size: 3355 bytes --]

xfs_quota does not properly parse users or groups that begin with a number.
Only call atoi when user or group consists of digits only.

Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>

---

Fresh clone of xfsprogs showed I missed a change in quota_proj_type()
(Thanks Chandra pointing that out)

V2:
	Change 'i=0' to 'i = 0' (sandeen suggestion) 
	Use bool instead of boolean_t (dchinner suggestion)
V3:
	Also change quota_proj_type() to use isdigits_only() (sekharan suggestion)

 include/input.h |    2 ++
 libxcmd/input.c |   13 +++++++++++++
 quota/quota.c   |    6 +++---
 quota/quota.h   |    2 ++
 4 files changed, 20 insertions(+), 3 deletions(-)

Index: b/include/input.h
===================================================================
--- a/include/input.h
+++ b/include/input.h
@@ -22,6 +22,7 @@
 #include <grp.h>
 #include <sys/types.h>
 #include <xfs/project.h>
+#include <stdbool.h>
 
 extern char	**breakline(char *input, int *count);
 extern void	doneline(char *input, char **vec);
@@ -46,6 +47,7 @@ extern void	timestr(struct timeval *tv,
 extern uid_t	uid_from_string(char *user);
 extern gid_t	gid_from_string(char *group);
 extern prid_t	prid_from_string(char *project);
+extern bool	isdigits_only(const char *str);
 
 #define HAVE_FTW_H 1	/* TODO: configure me */
 
Index: b/libxcmd/input.c
===================================================================
--- a/libxcmd/input.c
+++ b/libxcmd/input.c
@@ -19,6 +19,7 @@
 #include <xfs/xfs.h>
 #include <xfs/input.h>
 #include <ctype.h>
+#include <stdbool.h>
 
 #if defined(ENABLE_READLINE)
 # include <readline/history.h>
@@ -398,6 +399,18 @@ gid_from_string(
 	return -1;
 }
 
+bool isdigits_only(
+	const char *str)
+{
+	int i;
+
+	for (i = 0; i < strlen(str); i++) {
+		if (!isdigit(str[i]))
+			return false;
+	}
+	return true;
+}
+
 #define HAVE_FTW_H 1	/* TODO: configure me */
 
 #ifndef HAVE_FTW_H
Index: b/quota/quota.c
===================================================================
--- a/quota/quota.c
+++ b/quota/quota.c
@@ -224,7 +224,7 @@ quota_user_type(
 	uid_t		id;
 
 	if (name) {
-		if (isdigit(name[0])) {
+		if (isdigits_only(name)) {
 			id = atoi(name);
 			name = getusername(id, flags & NO_LOOKUP_FLAG);
 		} else if ((u = getpwnam(name))) {
@@ -273,7 +273,7 @@ quota_group_type(
 	int		i, ngroups, dofree = 0;
 
 	if (name) {
-		if (isdigit(name[0])) {
+		if (isdigits_only(name)) {
 			gid = atoi(name);
 			name = getgroupname(gid, flags & NO_LOOKUP_FLAG);
 		} else {
@@ -344,7 +344,7 @@ quota_proj_type(
 		return;
 	}
 
-	if (isdigit(name[0])) {
+	if (isdigits_only(name)) {
 		id = atoi(name);
 		name = getprojectname(id, flags & NO_LOOKUP_FLAG);
 	} else if ((p = getprnam(name))) {
Index: b/quota/quota.h
===================================================================
--- a/quota/quota.h
+++ b/quota/quota.h
@@ -19,6 +19,7 @@
 #include <xfs/xqm.h>
 #include <xfs/path.h>
 #include <xfs/project.h>
+#include <stdbool.h>
 
 /*
  * Different forms of XFS quota
@@ -80,4 +81,5 @@ enum {
 extern char *uid_to_name(__uint32_t __uid);
 extern char *gid_to_name(__uint32_t __gid);
 extern char *prid_to_name(__uint32_t __prid);
+extern bool isdigits_only(const char *);
 


_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

             reply	other threads:[~2013-04-22 17:46 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-22 17:32 rjohnston [this message]
2013-04-22 20:22 ` [PATCH V3] xfsprogs: xfs_quota allow user or group names beginning with Chandra Seetharaman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130422173205.877894469@sgi.com \
    --to=rjohnston@sgi.com \
    --cc=dchinner@redhat.com \
    --cc=sandeen@redhat.com \
    --cc=sekharan@us.ibm.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.