On Fri, 2009-06-12 at 19:16 +0530, naresh kamboju wrote: 
> Hi,
> 
> I have noticed failures under
> testcases/open_posix_testsuite/conformance/interfaces/mlock/12-1.c
> and
> testcases/open_posix_testsuite/conformance/interfaces/mlock/speculative/12-1.c
> and fixed as per man page
> mlock()
> 
> EPERM:
> 
> (Linux 2.6.9 and later) the caller was not privileged (CAP_IPC_LOCK)
> and its RLIMIT_MEMLOCK soft resource limit was 0.
> 
> Please find the patch below and as attachment.
> 
> Best regards
> Naresh Kamboju
> 
> Signed-off-by: Naresh Kamboju < [email protected] >

Thanks.

Regards--
Subrata

> 
> diff -Naurb 
> a/testcases/open_posix_testsuite/conformance/interfaces/mlock/12-1.c
> b/testcases/open_posix_testsuite/conformance/interfaces/mlock/12-1.c
> --- a/testcases/open_posix_testsuite/conformance/interfaces/mlock/12-1.c      
> 2005-06-03
> 22:00:32.000000000 +0530
> +++ b/testcases/open_posix_testsuite/conformance/interfaces/mlock/12-1.c      
> 2009-06-12
> 17:18:00.000000000 +0530
> @@ -8,7 +8,8 @@
>   *  GNU General Public License for more details.
>   *
>   * Test that the mlock() function sets errno = EPERM if the calling process
> - * does not have the appropriate privilege to perform the requested 
> operation.
> + * does not have the appropriate privilege to perform the requested operation
> + * (Linux 2.6.9 and later) and its RLIMIT_MEMLOCK soft resource limit set to 
> 0.
>   */
> 
>  #define _XOPEN_SOURCE 600
> @@ -21,6 +22,7 @@
>  #include <sys/types.h>
>  #include <pwd.h>
>  #include <string.h>
> +#include <sys/resource.h>
>  #include "posixtest.h"
> 
>  #define BUFSIZE 8
> @@ -29,6 +31,9 @@
>  int set_nonroot()
>  {
>       struct passwd *pw;
> +        struct rlimit rlim;
> +        int ret=0;
> +
>       setpwent();
>       /* search for the first user which is non root */
>       while((pw = getpwent()) != NULL)
> @@ -40,6 +45,18 @@
>               return 1;
>       }
> 
> +     /*
> +      * mlock()
> +      * EPERM:
> +      * (Linux 2.6.9 and later) the caller was not privileged (CAP_IPC_LOCK)
> +      * and its RLIMIT_MEMLOCK soft resource limit was 0.
> +      */
> +
> +        rlim.rlim_cur = 0;
> +        rlim.rlim_max = 0;
> +        if ((ret = setrlimit(RLIMIT_MEMLOCK,&rlim)) != 0)
> +                printf("Failed at setrlimit() return %d \n", ret);
> +
>       if(seteuid(pw->pw_uid) != 0) {
>               if(errno == EPERM) {
>                       printf("You don't have permission to change your 
> UID.\n");
> diff -Naurb 
> a/testcases/open_posix_testsuite/conformance/interfaces/mlock/speculative/12-1.c
> b/testcases/open_posix_testsuite/conformance/interfaces/mlock/speculative/12-1.c
> --- 
> a/testcases/open_posix_testsuite/conformance/interfaces/mlock/speculative/12-1.c
>   2007-07-26
> 17:32:13.000000000 +0530
> +++ 
> b/testcases/open_posix_testsuite/conformance/interfaces/mlock/speculative/12-1.c
>   2009-06-12
> 17:18:24.000000000 +0530
> @@ -8,7 +8,8 @@
>   *  GNU General Public License for more details.
>   *
>   * Test that the mlock() function sets errno = EPERM if the calling process
> - * does not have the appropriate privilege to perform the requested 
> operation.
> + * does not have the appropriate privilege to perform the requested operation
> + * (Linux 2.6.9 and later) and its RLIMIT_MEMLOCK soft resource limit set to 
> 0.
>   */
> 
>  #define _XOPEN_SOURCE 600
> @@ -21,6 +22,7 @@
>  #include <sys/types.h>
>  #include <pwd.h>
>  #include <string.h>
> +#include <sys/resource.h>
>  #include "posixtest.h"
> 
>  #define BUFSIZE 8
> @@ -29,6 +31,9 @@
>  int set_nonroot()
>  {
>       struct passwd *pw;
> +        struct rlimit rlim;
> +        int ret=0;
> +
>       setpwent();
>       /* search for the first user which is non root */
>       while((pw = getpwent()) != NULL)
> @@ -40,6 +45,18 @@
>               return 1;
>       }
> 
> +     /*
> +      * mlock()
> +      * EPERM:
> +      * (Linux 2.6.9 and later) the caller was not privileged (CAP_IPC_LOCK)
> +      * and its RLIMIT_MEMLOCK soft resource limit was 0.
> +      */
> +
> +        rlim.rlim_cur = 0;
> +        rlim.rlim_max = 0;
> +        if ((ret = setrlimit(RLIMIT_MEMLOCK,&rlim)) != 0)
> +                printf("Failed at setrlimit() return %d \n", ret);
> +
>       if(seteuid(pw->pw_uid) != 0) {
>               if(errno == EPERM) {
>                       printf("You don't have permission to change your 
> UID.\n");


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to