[PATCH v1 3/4] tests: improve quotactl coverage

Zhibin Li 08826794brmt at gmail.com
Tue Jul 10 13:09:48 UTC 2018


On Tue, Jul 10, 2018 at 7:48 PM Dmitry V. Levin <ldv at altlinux.org> wrote:

> On Mon, Jul 09, 2018 at 12:11:31AM +0800, Zhibin Li wrote:
> > Use check_quota function for invalid commands instead of manually
> syscall invocation.
>
> instead of manual quotactl syscall invocations.
>
My mistake, it should be adjective instead of adverb :)

>
> > In this way injection can also be checked for these commands in the next
> commit.
> >
> > * tests/quotactl.c: (print_dqfmt): New function.
>
> * tests/quotactl.c (print_dqfmt): New function.
>
> > (invalid_cmd_str, invalid_id_str): New variables.
>
> (main): Add invalid_cmd_str and invalid_id_str local variables,
> remove unused variable rc, use check_quota and print_dqfmt instead of
> manual quotactl syscall invocations.
>
> > * tests/quotactl-xfs.c: Removed unused variable rc.
> > (invalid_cmd): New variable.
>
> * tests/quotactl-xfs.c (main): : Add invalid_cmd variable, remove unused
> variable rc, use check_quota instead of manual quotactl syscall
> invocations.
>
> I will revise the commit message to make it more clear (I should've taken
more references).

> > ---
> >  tests/quotactl-xfs.c | 35 +++++++++++++++---------
> >  tests/quotactl.c     | 76
> +++++++++++++++++++++++++++++++++++++++-------------
> >  2 files changed, 80 insertions(+), 31 deletions(-)
> >
> > diff --git a/tests/quotactl-xfs.c b/tests/quotactl-xfs.c
> > index 036b61d2..c08b1584 100644
> > --- a/tests/quotactl-xfs.c
> > +++ b/tests/quotactl-xfs.c
> > @@ -207,7 +207,7 @@ main(void)
> >       char bogus_addr_str[sizeof(void *) * 2 + sizeof("0x")];
> >       char unterminated_str[sizeof(void *) * 2 + sizeof("0x")];
> >
> > -     long rc;
> > +     static char invalid_cmd[1024];
> >       TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_disk_quota, xdq);
> >       TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_quota_stat, xqstat);
> >       TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_quota_statv, xqstatv);
> > @@ -234,12 +234,12 @@ main(void)
> >                   "|XFS_QUOTA_GDQ_ACCT|XFS_QUOTA_GDQ_ENFD"
> >                   "|XFS_QUOTA_PDQ_ENFD|0xdeadbec0]");
> >
> > -     rc = syscall(__NR_quotactl, QCMD(Q_XQUOTAON, 0xfacefeed),
> bogus_dev,
> > -                  bogus_id, bogus_addr);
> > -     printf("quotactl(QCMD(Q_XQUOTAON, %#x /* ???QUOTA */)"
> > -            ", %s, %p) = %s\n",
> > -            QCMD_TYPE(QCMD(Q_XQUOTAON, 0xfacefeed)),
> > -            bogus_dev_str, bogus_addr, sprintrc(rc));
> > +     snprintf(invalid_cmd, sizeof(invalid_cmd),
> > +              "QCMD(Q_XQUOTAON, %#x /* ???QUOTA */)",
> > +              QCMD_TYPE(QCMD(Q_XQUOTAON, 0xfacefeed)));
> > +     check_quota(CQF_ID_SKIP,
> > +                 QCMD(Q_XQUOTAON, 0xfacefeed), invalid_cmd,
> > +                 bogus_dev, bogus_dev_str, bogus_addr);
> >
> >
> >       /* Q_XQUOTAOFF */
> > @@ -264,11 +264,11 @@ main(void)
> >       /* Q_XGETQUOTA */
> >
> >       /* Trying our best to get successful result */
> > -     check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_GETQUOTA, USRQUOTA)),
> > +     check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_XGETQUOTA, USRQUOTA)),
> >                   ARG_STR("/dev/sda1"), getuid(), xdq, print_xdisk_quota,
> >                   (intptr_t) 1);
>
> This change is quite different from the description.
> If it's a fix (I bet it is), it should rather go to a separate commit.
>
I got it. Sorry for messing fixes and improvements up in one patch. I should
send them separately.

>
> > -     check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_GETQUOTA, GRPQUOTA)),
> > +     check_quota(CQF_ADDR_CB, ARG_STR(QCMD(Q_XGETQUOTA, GRPQUOTA)),
> >                   ARG_STR(NULL), -1, xdq, print_xdisk_quota, (intptr_t)
> 2);
>
> Likewise.
>
> > @@ -298,21 +298,30 @@ main(void)
> >                   ARG_STR("/dev/sda1"), xqstat, print_xquota_stat,
> (intptr_t) 1);
> >
> >       check_quota(CQF_ID_SKIP | CQF_ADDR_CB,
> > -                 ARG_STR(QCMD(Q_XGETQSTATV, PRJQUOTA)),
> > +                 ARG_STR(QCMD(Q_XGETQSTAT, USRQUOTA)),
> > +                 ARG_STR("NULL"), xqstat, print_xquota_stat, (intptr_t)
> 2);
>
> Likewise.
>
> > +     check_quota(CQF_ID_SKIP,
> > +                 ARG_STR(QCMD(Q_XGETQSTAT, PRJQUOTA)),
> >                   unterminated, unterminated_str,
> > -                 xqstat + 1, print_xquota_stat, (intptr_t) 2);
> > +                 xqstat + 1);
> >
> >
> >       /* Q_XGETQSTATV */
> >
> >       check_quota(CQF_ID_SKIP | CQF_ADDR_CB,
> > -                 ARG_STR(QCMD(Q_XGETQSTAT, USRQUOTA)),
> > -                 ARG_STR("/dev/sda1"), xqstatv, print_xquota_statv, 1);
> > +                 ARG_STR(QCMD(Q_XGETQSTATV, USRQUOTA)),
> > +                 ARG_STR("/dev/sda1"), xqstatv, print_xquota_statv,
> (intptr_t) 1);
>
> Likewise.
>
>
> --
> ldv
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20180710/c2a9a73a/attachment.html>


More information about the Strace-devel mailing list