Hi, Could you please review this patch. On Thu, 2014-02-20 at 10:10 +0800, Zeng Linggang wrote: > When we call getgrgid_r() to verify whether the corresponding gid is > existent, if not, getgrgid_r() will return 0 or ENOENT or ESRCH or > EBADF or EPERM... > > But tst_get_unused_gid() only check return value 0, this is not complete. > For example, if the gid is not existent, getgrgid_r() in RHEL7 beta will > return ENOENT, which will cause tst_get_unused_gid failed incorrectly. > This is the same for getpwuid_r(). > > We should make tst_get_unused_uid/tst_get_unused_gid check all the possible > return value. > > Signed-off-by: Zeng Linggang <[email protected]> > --- > lib/tst_uid_gid.c | 31 +++++++++++++++++++++++++++---- > 1 file changed, 27 insertions(+), 4 deletions(-) > > diff --git a/lib/tst_uid_gid.c b/lib/tst_uid_gid.c > index 3ba1ad6..a835c38 100644 > --- a/lib/tst_uid_gid.c > +++ b/lib/tst_uid_gid.c > @@ -16,6 +16,7 @@ > * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > */ > > +#include <errno.h> > #include <grp.h> > #include <limits.h> > #include <pwd.h> > @@ -44,10 +45,21 @@ uid_t tst_get_unused_uid(void) > s = getpwuid_r(uid, &pwd, buf, bufsize, &result); > if (result == NULL) { > free(buf); > - if (s == 0) > + /* > + * When the given name or gid was not found, getgrgid_r > + * may return 0 or ENOENT or ESRCH or EBADF or EPERM > + * or ... > + */ > + switch (s) { > + case 0: > + case ENOENT: > + case ESRCH: > + case EBADF: > + case EPERM: > return uid; > - else > + default: > return -1; > + } > } > } > > @@ -76,10 +88,21 @@ gid_t tst_get_unused_gid(void) > s = getgrgid_r(gid, &grp, buf, bufsize, &result); > if (result == NULL) { > free(buf); > - if (s == 0) > + /* > + * When the given name or gid was not found, getgrgid_r > + * may return 0 or ENOENT or ESRCH or EBADF or EPERM > + * or ... > + */ > + switch (s) { > + case 0: > + case ENOENT: > + case ESRCH: > + case EBADF: > + case EPERM: > return gid; > - else > + default: > return -1; > + } > } > } >
------------------------------------------------------------------------------ Put Bad Developers to Shame Dominate Development with Jenkins Continuous Integration Continuously Automate Build, Test & Deployment Start a new project now. Try Jenkins in the cloud. http://p.sf.net/sfu/13600_Cloudbees _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
