xfsprogs: xfs_quota allow user or group names beginning with digits
PATCH v2 1/1 xfsprogs: xfs_quota allow user or group names beginning with digits
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.
---
V2:
Change 'i=0' to 'i = 0' (sandeen suggestion) Use bool instead of boolean_t (dchinner suggestion)
include/input.h | 1 +
libxcmd/input.c | 12 ++++++++++++ quota/quota.c | 4 ++-- quota/quota.h | 1 + 4 files changed, 16 insertions(+), 2 deletions(-)
include/input.h +2 -0
@@ -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 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 */
libxcmd/input.c +13 -0
@@ -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 @@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
quota/quota.c +2 -2
@@ -224,7 +224,7 @@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 @@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 {
quota/quota.h +2 -0
@@ -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 @@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
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Is there any specific reason why quota_proj_type() is not changed ?
Quoted 112 lines · On Mon, 2013-04-22 at 08:31 -0500, [email protected] wrote:
plain text document attachment (V2-xfsprogs-xfs_quota-allow-user-or-group-names-beginning-with-digits.patch)
xfs_quotadoes 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 <[email protected]>Reviewed-by Eric Sandeen <[email protected]>---
V2:
Change 'i=0' to 'i = 0' (sandeen suggestion) Use bool instead ofboolean_t(dchinner suggestion)
include/input.h| 1 +libxcmd/input.c | 12 ++++++++++++ quota/quota.c | 4 ++-- quota/quota.h | 1 + 4 files changed, 16 insertions(+), 2 deletions(-)Index:
xfsprogs/include/input.h
===================================================================include/input.h +2
-0@@ -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 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:
xfsprogs/libxcmd/input.c
===================================================================libxcmd/input.c +13
-0@@ -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 @@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:
xfsprogs/quota/quota.c
===================================================================quota/quota.c +2
-2@@ -224,7 +224,7 @@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 @@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 {Index:
xfsprogs/quota/quota.h
===================================================================quota/quota.h +2
-0@@ -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 @@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 *);
Quoted 5 lines
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 3 lines · Chandra Seetharaman
Is there any specific reason why
quota_proj_type()is not changed ?
Yes project quota's were being punished. ;)
Good catch Chandra, I will submit a V3.
3 times seems to be the charm on patches. :D
Thanks
--Rich
Quoted 44 lines · On Mon, 2013-04-22 at 08:31 -0500, [email protected] wrote:
Quoted 43 lines
Index:
xfsprogs/quota/quota.c
===================================================================quota/quota.c +2
-2@@ -224,7 +224,7 @@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 @@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 {Index:
xfsprogs/quota/quota.h
===================================================================quota/quota.h +2
-0@@ -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 @@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 *);
Quoted 7 lines
Quoted 5 lines
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs