[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ltp-list
Subject:    Re: [LTP] Setgroups01_16 Test Failure
From:       Daniel Gollub <dgollub () suse ! de>
Date:       2008-10-20 13:07:46
Message-ID: 200810201507.47810.dgollub () suse ! de
[Download RAW message or body]

On Monday 20 October 2008 14:47:36 Subrata Modak wrote:
> > > 
> > > Not sure why ??
> > 
> > I just sent some patches for setgroups02_16 - looks like it's a similar
> > problem for setgroups01_16 (for some reason setgroups01_16 didn't failed for
> > me, only setgroups02_16)
> > 
> > Anyway, i guess the reason is the use of the uninitialized groups list and
> > passing the _full_ length to the syscalls.
> > 
> > Could you try attached patch?
> 
> Yes, the attached Patch solves the problem reported on x86_64 and does
> not interfere with architectures where it was already passing. Thanks
> for this.

Not quite sure whats going on with sourceforge today - patch queue got
actually sent out few hours ago. I just attach both patches here once again:

------------------------------->8---------------------------------------

Subject: fix setgroups02 by calling setgroups()/getgroups with correct list size

setgroups02(_16) is working with an uninitialized list, expect the first GID
field. setgroups() and getgroups() additionally get called with the full length 
of the uninitialized list. The uninitialized values cause setgroups02_16 to
fail:

===
setgroups02_16    1  BROK  :  gid returned from getgroups is too large for testing setgroups32
===

Since the uninitialized values could be greater then 0xffff.


Signed-off-by: Daniel Gollub <dgollub@suse.de>

---

Index: ltp-full-20081017/testcases/kernel/syscalls/setgroups/setgroups02.c
===================================================================
--- ltp-full-20081017.orig/testcases/kernel/syscalls/setgroups/setgroups02.c
+++ ltp-full-20081017/testcases/kernel/syscalls/setgroups/setgroups02.c
@@ -91,7 +91,7 @@ main(int ac, char **av)
 {
 	int lc,i;			/* loop counters */
 	char *msg;			/* message returned from parse_opts */
-	int gidsetsize = NGROUPS;	/* total groups */
+	int gidsetsize = 1;		/* only one GID, the GID of TESTUSER */
 	int PASS_FLAG = 0;		/* used for checking group array */
 	
 	/* Parse standard options given to run the test. */

----------------------------------------->8------------------------------------
Subject: corrected signed/unsigned types of SETGROUPS/GETGROUPS compat functions in setgroups/compat_16.h

Change argument list of GETGROUPS/SETGROUPS to represent the argument list of
the syscalls. getgroups() first argument is a signed int!

Signed-off-by: Daniel Gollub <dgollub@suse.de>

---
 testcases/kernel/syscalls/setgroups/compat_16.h |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Index: ltp-full-20081020/testcases/kernel/syscalls/setgroups/compat_16.h
===================================================================
--- ltp-full-20081020.orig/testcases/kernel/syscalls/setgroups/compat_16.h
+++ ltp-full-20081020/testcases/kernel/syscalls/setgroups/compat_16.h
@@ -32,13 +32,13 @@ extern void cleanup(void);
 #ifdef TST_USE_COMPAT16_SYSCALL
 
 long
-SETGROUPS(int gidsetsize, GID_T *list)
+SETGROUPS(size_t gidsetsize, GID_T *list)
 {
 	return syscall(__NR_setgroups, gidsetsize, list);
 }
 
 int
-GETGROUPS(size_t size16, GID_T *list16)
+GETGROUPS(int size16, GID_T *list16)
 {
 	int r;
 	int i;

@@ -75,7 +75,7 @@ SETGROUPS(size_t size, const GID_T *list
 }
 
 int
-GETGROUPS(size_t size, GID_T *list)
+GETGROUPS(int size, GID_T *list)
 {
 	return getgroups(size, list);
 }

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic