From: Peter Xu <peterx@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Thomas Huth <thuth@redhat.com>,
Hyman Huang <yong.huang@smartx.com>,
Fabiano Rosas <farosas@suse.de>,
qemu-devel@nongnu.org
Subject: Re: [PATCH] migration/dirtyrate: Silence warning about strcpy() on OpenBSD
Date: Wed, 16 Oct 2024 13:09:11 -0400 [thread overview]
Message-ID: <Zw_zNzJdRIS42L-3@x1n> (raw)
In-Reply-To: <Zw_oM-RStF4QhWik@redhat.com>
On Wed, Oct 16, 2024 at 05:22:11PM +0100, Daniel P. Berrangé wrote:
> On Wed, Oct 16, 2024 at 06:07:12PM +0200, Thomas Huth wrote:
> > The linker on OpenBSD complains:
> >
> > ld: warning: dirtyrate.c:447 (../src/migration/dirtyrate.c:447)(...):
> > warning: strcpy() is almost always misused, please use strlcpy()
>
> Is that the only place it complains ? We use 'strcpy' in almost
> 100 places across the codebase....
I remember we switched some places to pstrcpy(), which seems superior,
where I saw tha g_strlcpy() is mostly strlcpy() and the man page says:
strlcpy(3bsd) and strlcat(3bsd) are similar, but have important
performance problems; see BUGS.
...
BUGS
...
strlcpy(3) and strlcat(3) need to read the entire src string, even
if the destination buffer is small. This makes them vulnerable to
Denial of Service (DoS) attacks if an attacker can control the
length of the src string. And if not, they're still unnecessarily
slow.
>
> > It's currently not a real problem in this case since both arrays
> > have the same size (256 bytes). But just in case somebody changes
> > the size of the source array in the future, let's better play safe
> > and use g_strlcpy() here instead.
> >
> > Signed-off-by: Thomas Huth <thuth@redhat.com>
> > ---
> > migration/dirtyrate.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c
> > index 233acb0855..090c76e934 100644
> > --- a/migration/dirtyrate.c
> > +++ b/migration/dirtyrate.c
> > @@ -444,7 +444,7 @@ static void get_ramblock_dirty_info(RAMBlock *block,
> > info->ramblock_pages = qemu_ram_get_used_length(block) >>
> > qemu_target_page_bits();
> > info->ramblock_addr = qemu_ram_get_host_addr(block);
> > - strcpy(info->idstr, qemu_ram_get_idstr(block));
> > + g_strlcpy(info->idstr, qemu_ram_get_idstr(block), sizeof(info->idstr));
> > }
>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>
>
> Is it worth also adding
>
> G_STATIC_ASSERT(sizeof((struct RamblockDirtyInfo){}.idstr) ==
> sizeof((struct RAMBlock){}.idstr));
>
> at the top of this file, since both of these fields are expected to
> be the same size by this code, to avoid truncation.
Or we could define a size macro for RAMBlock.idstr and use it everywhere
where it's fundamentally the same thing.
>
>
> With regards,
> Daniel
> --
> |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
> |: https://libvirt.org -o- https://fstop138.berrange.com :|
> |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
>
--
Peter Xu
next prev parent reply other threads:[~2024-10-16 17:10 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-16 16:07 [PATCH] migration/dirtyrate: Silence warning about strcpy() on OpenBSD Thomas Huth
2024-10-16 16:22 ` Daniel P. Berrangé
2024-10-16 17:09 ` Peter Xu [this message]
2024-10-17 5:39 ` Thomas Huth
2024-10-17 7:01 ` Yong Huang
2024-10-17 9:36 ` Peter Maydell
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=Zw_zNzJdRIS42L-3@x1n \
--to=peterx@redhat.com \
--cc=berrange@redhat.com \
--cc=farosas@suse.de \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
--cc=yong.huang@smartx.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).