Hi!
> -char test_home[PATH_MAX];    /* variable to hold TESTHOME env */
>  char *TCID = "fchown04";
> -int TST_TOTAL = 2;
> -int exp_enos[] = { EPERM, EBADF, 0 };
> -
> -char bin_uid[] = "bin";
> -struct passwd *ltpuser;
> +int TST_TOTAL = ARRAY_SIZE(test_cases);
> +static int exp_enos[] = { EPERM, EBADF, 0 };
>  
> -void setup();                        /* Main setup function for the tests */
> -void cleanup();                      /* cleanup function for the test */
> +static void setup(void);
> +static void cleanup(void);
>  
>  int main(int ac, char **av)
>  {
>       int lc;
> -     char *msg;
> -     int fd;                 /* test file descriptor */
>       int i;
> -     uid_t user_id;          /* Effective user id of a test process */
> -     gid_t group_id;         /* Effective group id of a test process */
> -
> -     if ((msg = parse_opts(ac, av, NULL, NULL)) != NULL)
> -             tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);

Again, please do not remove the option parsing code.

>       setup();
>  
>       TEST_EXP_ENOS(exp_enos);
>  
> -     user_id = geteuid();
> -     group_id = getegid();
> -
>       for (lc = 0; TEST_LOOPING(lc); lc++) {
>  
>               tst_count = 0;
>  
>               for (i = 0; i < TST_TOTAL; i++) {
>  
> -                     fd = test_cases[i].fd;
> -
> -                     if (fd == 1)
> -                             fd = fd1;
> -                     else
> -                             fd = fd2;
> -
> -                     TEST(fchown(fd, user_id, group_id));
> +                     TEST(fchown(*test_cases[i].fd, geteuid(), getegid()));
>  
>                       if (TEST_RETURN == -1) {
> -                             if (TEST_ERRNO == test_cases[i].exp_errno)
> +                             if (TEST_ERRNO == test_cases[i].exp_errno) {
>                                       tst_resm(TPASS | TTERRNO,
>                                                "fchown failed as expected");
> -                             else
> +                             } else {
>                                       tst_resm(TFAIL | TTERRNO,
>                                                "fchown failed unexpectedly; "
>                                                "expected %d - %s",
>                                                test_cases[i].exp_errno,
>                                                strerror(test_cases[i].
>                                                         exp_errno));
> -                     } else
> +                             }
> +                     } else {
>                               tst_resm(TFAIL, "fchown passed unexpectedly");
> +                     }
>               }
>  
>       }
> @@ -171,58 +146,39 @@ int main(int ac, char **av)
>       tst_exit();
>  }
>  
> -void setup()
> +static void setup(void)
>  {
> -     int i;
> +     struct passwd *ltpuser;
>  
>       TEST_PAUSE;
>  
>       tst_require_root(NULL);
>  
> -     ltpuser = SAFE_GETPWNAM(NULL, bin_uid);
> -
> -     tst_tmpdir();
> -
> -     tst_sig(FORK, DEF_HANDLER, cleanup);
> -
> -     initgroups("root", getgid());
> +     ltpuser = SAFE_GETPWNAM(cleanup, "nobody");
>  
> -     SAFE_SETEGID(NULL, ltpuser->pw_uid);
> -     SAFE_SETEUID(NULL, ltpuser->pw_gid);
> +     SAFE_SETEUID(cleanup, ltpuser->pw_uid);
>  
>       tst_tmpdir();
>  
> -     for (i = 0; i < TST_TOTAL; i++)
> -             if (test_cases[i].setupfunc != NULL)
> -                     test_cases[i].setupfunc();
> -}
> -
> -void setup1()
> -{
> -     int old_uid;
> -     struct passwd *nobody;
> +     tst_sig(FORK, DEF_HANDLER, cleanup);
>  
> +     /* EPERM */
>       fd1 = SAFE_OPEN(cleanup, TEST_FILE1, O_RDWR | O_CREAT, 0666);
>  
> -     old_uid = geteuid();
> -
>       SAFE_SETEUID(cleanup, 0);
>  
> -     nobody = SAFE_GETPWNAM(cleanup, "nobody");
> -
> -     if (fchown(fd1, nobody->pw_uid, nobody->pw_gid) < 0)
> +     if (fchown(fd1, 0, 0) < 0)
>               tst_brkm(TBROK | TERRNO, cleanup, "fchown failed");
>  
> -     SAFE_SETEUID(cleanup, old_uid);
> -}
> -
> -void setup2()
> -{
> +     /* EBADF */
>       fd2 = SAFE_OPEN(cleanup, TEST_FILE2, O_RDWR | O_CREAT, 0666);
> +
>       SAFE_CLOSE(cleanup, fd2);
> +
> +     SAFE_SETEUID(cleanup, ltpuser->pw_uid);
>  }
>  

-- 
Cyril Hrubis
[email protected]

------------------------------------------------------------------------------
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to