From: Willy Tarreau <w@1wt.eu>
To: "Thomas Weißschuh" <thomas@t-8ch.de>
Cc: Yuan Tan <tanyuan@tinylab.org>,
falcon@tinylab.org, linux-kernel@vger.kernel.org,
linux-kselftest@vger.kernel.org
Subject: Re: [PATCH 2/2] selftests/nolibc: add testcase for pipe.
Date: Sun, 30 Jul 2023 13:08:33 +0200 [thread overview]
Message-ID: <20230730110833.GA12462@1wt.eu> (raw)
In-Reply-To: <c5de2d13-3752-4e1b-90d9-f58cca99c702@t-8ch.de>
On Sun, Jul 30, 2023 at 10:07:24AM +0200, Thomas Weißschuh wrote:
> > In fact you make a good point regarding the fact that the test doesn't
> > use read()'s return value. This problem totally goes away if the return
> > value is used, e.g.:
> >
> > len = read(pipefd[0], buf, sizeof(buf));
> > close(pipefd[0]);
> > waitpid(pid, NULL, 0);
> > return len < 0 || len > sizeof(buf) || len > strlen(msg) || memcmp(buf, msg, len) != 0;
>
> Wouldn't this happily accept len == 0?
>
> Why not just:
>
> if (len != strlen(msg))
> return 1;
> return !!memcmp(buf, msg, len);
Indeed, works for me.
> Also so far we have assumed that one call one call to read() is enough.
> But looking at pipe(7) this is not guaranteed by the spec.
> If we want to be really sure, a loop around read() seems to be necessary.
In practice it will be OK as the message is small and sent in one syscall,
so let's not care too much about this for now.
Willy
prev parent reply other threads:[~2023-07-30 11:08 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-25 18:01 [PATCH 0/2] tools/nolibc: add pipe() and its testcase Yuan Tan
2023-07-25 18:01 ` [PATCH 1/2] tools/nolibc: add pipe() support Yuan Tan
2023-07-28 15:50 ` Zhangjin Wu
2023-07-28 19:17 ` Willy Tarreau
2023-07-29 8:37 ` Zhangjin Wu
2023-07-29 10:04 ` Willy Tarreau
2023-07-25 18:01 ` [PATCH 2/2] selftests/nolibc: add testcase for pipe Yuan Tan
2023-07-29 22:17 ` Thomas Weißschuh
2023-07-30 3:33 ` Willy Tarreau
2023-07-30 6:55 ` Thomas Weißschuh
2023-07-30 7:12 ` Willy Tarreau
2023-07-30 8:07 ` Thomas Weißschuh
2023-07-30 11:08 ` Willy Tarreau [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230730110833.GA12462@1wt.eu \
--to=w@1wt.eu \
--cc=falcon@tinylab.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=tanyuan@tinylab.org \
--cc=thomas@t-8ch.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox