On Tue, 2009-07-07 at 14:49 +0530, naresh kamboju wrote: 
> Hi,
> 
> I have noticed FAIL and fixed mmap/18-1.c under open posix testsuite.
> I have fixed this test case by changing the seteuid() from root to
> non-root. To get resource limit setrlimit()
> 
> STEPS:
> mmap:
> EAGAIN:
> Lock all the memory by mlockall().
> Set resource limit setrlimit()
> Change the user to non-root then only setrmilit is applicable.
> 
> I have attached the patch and below.
> Please review the same.
> 
> Best regards,
> Naresh Kamboju
> 
> /*****************************************************************/
> [mmap]# ./18-1.test
> Test Pass: mmap/18-1.c Get EAGAIN: Resource temporarily unavailable
> /*****************************************************************/
> 
> 
> Signed-off-by: Naresh Kamboju < [email protected] >

Thanks.

Regards--
Subrata

> diff -Naurb 
> a/testcases/open_posix_testsuite/conformance/interfaces/mmap/18-1.c
> b/testcases/open_posix_testsuite/conformance/interfaces/mmap/18-1.c
> --- a/testcases/open_posix_testsuite/conformance/interfaces/mmap/18-1.c       
> 2005-06-03
> 22:00:33.000000000 +0530
> +++ b/testcases/open_posix_testsuite/conformance/interfaces/mmap/18-1.c       
> 2009-07-07
> 14:03:47.000000000 +0530
> @@ -13,9 +13,11 @@
>   * 1. Call mlockall(), setting MCL_FUTURE;
>   * 2. Call setrlimit(), set rlim_cur of resource RLIMIT_MEMLOCK to a
>   *    certain value.
> - * 3. Map a shared memory object, with size larger than the
> + * 3. Change user to non-root user seteuid()
> + * 4. Map a shared memory object, with size larger than the
>   *    rlim_cur value set in step 2
> - * 4. Should get EAGAIN.
> + * 5. Should get EAGAIN.
> + * 6. Change user to root seteuid()
>   */
> 
>  #define _XOPEN_SOURCE 600
> @@ -28,12 +30,43 @@
>  #include <sys/stat.h>
>  #include <sys/resource.h>
>  #include <fcntl.h>
> +#include <pwd.h>
>  #include <string.h>
>  #include <errno.h>
>  #include "posixtest.h"
> 
>  #define TNAME "mmap/18-1.c"
> 
> +
> +/** Set the euid of this process to a non-root uid */
> +int set_nonroot()
> +{
> +     struct passwd *pw;
> +     setpwent();
> +     /* search for the first user which is non root */
> +     while((pw = getpwent()) != NULL)
> +             if(strcmp(pw->pw_name, "root"))
> +                     break;
> +     endpwent();
> +     if(pw == NULL) {
> +             printf("There is no other user than current and root.\n");
> +             return 1;
> +     }
> +
> +     if(seteuid(pw->pw_uid) != 0) {
> +             if(errno == EPERM) {
> +                     printf("You don't have permission to change your 
> UID.\n");
> +                     return 1;
> +             }
> +             perror("An error occurs when calling seteuid()");
> +             return 1;
> +     }
> +     
> +     printf("Testing with user '%s' (uid: %d)\n",
> +            pw->pw_name, (int)geteuid());
> +     return 0;
> +}
> +
>  int main()
>  {
>    char tmpfname[256];
> @@ -93,11 +126,29 @@
>    }
> 
>    fd = shm_fd;       
> +     
> +  /* This test should be run under standard user permissions */
> +  if (getuid() == 0) {
> +       if (set_nonroot() != 0) {
> +               printf("Cannot run this test as non-root user\n");    
> +               return PTS_UNTESTED;
> +       }
> +  }
> +
> +  /*
> +   * EAGAIN:
> +   * Lock all the memory by mlockall().
> +   * Set resource limit setrlimit()
> +   * Change the user to non-root then only setrmilit is applicable.
> +   */
> +
>    pa = mmap (addr, len, prot, flag, fd, off);
>    if (pa == MAP_FAILED && errno == EAGAIN)
>    {
>      printf ("Test Pass: " TNAME " Get EAGAIN: %s\n",
>              strerror(errno));
> +    /* Change user to root */
> +    seteuid(0);
>      close(fd);
>      munmap(pa, len);
>      exit(PTS_PASS);


------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have 
the opportunity to enter the BlackBerry Developer Challenge. See full prize 
details at: http://p.sf.net/sfu/blackberry
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to