From: Stefan Hajnoczi <stefanha@gmail.com>
To: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: peter.maydell@linaro.org, hangaohuai@huawei.com,
qemu-trivial@nongnu.org, mjt@tls.msk.ru, qemu-devel@nongnu.org,
peter.huangpeng@huawei.com, shannon.zhao@linaro.org,
Shannon Zhao <zhaoshenglong@huawei.com>,
pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2] fsdev/virtfs-proxy-helper: Fix possible overflow
Date: Tue, 31 Mar 2015 15:07:10 +0100 [thread overview]
Message-ID: <20150331140710.GB27156@stefanha-thinkpad.redhat.com> (raw)
In-Reply-To: <87pp7qlgzu.fsf@linux.vnet.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 1834 bytes --]
On Mon, Mar 30, 2015 at 07:33:33PM +0530, Aneesh Kumar K.V wrote:
> Stefan Hajnoczi <stefanha@gmail.com> writes:
>
> > On Sat, Mar 14, 2015 at 10:00:16AM +0800, Shannon Zhao wrote:
> >> It's detected by coverity. As max of sockaddr_un.sun_path is
> >> sizeof(helper.sun_path), should check the length of source
> >> and use strncpy instead of strcpy.
> >>
> >> Signed-off-by: Shannon Zhao <zhaoshenglong@huawei.com>
> >> Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
> >> ---
> >> v1->v2: Still use strcpy [Paolo]
> >> ---
> >> fsdev/virtfs-proxy-helper.c | 1 +
> >> 1 file changed, 1 insertion(+)
> >>
> >> diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c
> >> index bf2e5f3..13fe032 100644
> >> --- a/fsdev/virtfs-proxy-helper.c
> >> +++ b/fsdev/virtfs-proxy-helper.c
> >> @@ -738,6 +738,7 @@ static int proxy_socket(const char *path, uid_t uid, gid_t gid)
> >> return -1;
> >> }
> >>
> >> + g_assert(strlen(path) < sizeof(proxy.sun_path));
> >> sock = socket(AF_UNIX, SOCK_STREAM, 0);
> >
> > path is user input. While the assertion check silences Coverity, it is
> > not suitable for input validation. Users expect a graceful exit with an
> > error message, not an assertion failure if the given path is too long.
> >
> > I will send a patch.
>
> That is the proxy helper. The assert will cause an exit() which is good,
> isn't it ? I did update the qemu side of the patch to do a graceful exit
assert(3) calls abort(3), which sends SIGABRT. The signal causes a core
dump by default. That's not a proper way to exit on invalid input.
Plus, if the code is ever compiled with the NDEBUG macro set, the assert
would be removed and the check bypassed.
This is why assert() isn't suitable for input validation.
Stefan
[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]
prev parent reply other threads:[~2015-03-31 14:07 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-14 2:00 [Qemu-devel] [PATCH v2] fsdev/virtfs-proxy-helper: Fix possible overflow Shannon Zhao
2015-03-16 6:31 ` Aneesh Kumar K.V
2015-03-30 13:29 ` Stefan Hajnoczi
2015-03-30 14:03 ` Aneesh Kumar K.V
2015-03-31 14:07 ` Stefan Hajnoczi [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=20150331140710.GB27156@stefanha-thinkpad.redhat.com \
--to=stefanha@gmail.com \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=hangaohuai@huawei.com \
--cc=mjt@tls.msk.ru \
--cc=pbonzini@redhat.com \
--cc=peter.huangpeng@huawei.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
--cc=shannon.zhao@linaro.org \
--cc=zhaoshenglong@huawei.com \
/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;
as well as URLs for NNTP newsgroup(s).