[Libguestfs] [PATCH nbdkit] server/public.c: Uninline nbdkit_strdup_intern to avoid compiler warning.
Daniel P. Berrangé
berrange at redhat.com
Thu Sep 3 09:51:14 UTC 2020
On Thu, Sep 03, 2020 at 10:47:13AM +0100, Richard W.M. Jones wrote:
>
> A simple reproducer is:
>
> ----------------------------------------------------------------------
> #include <stdio.h>
> #include <stdlib.h>
> #include <stdint.h>
> #include <string.h>
>
> const char *
> copyn (const char *str, size_t n)
> {
> return strndup (str, n);
> }
>
> const char *
> copy (const char *str)
> {
> return copyn (str, SIZE_MAX);
> }
> ----------------------------------------------------------------------
>
> $ gcc -O2 -Wall -c test.c
> In function ‘copyn’,
> inlined from ‘copy’ at test.c:15:10:
> test.c:9:10: warning: ‘strndup’ specified bound 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Wstringop-overflow=]
> 9 | return strndup (str, n);
> | ^~~~~~~~~~~~~~~~
>
> $ gcc --version
> gcc (GCC) 10.2.1 20200826 (Red Hat 10.2.1-3)
> Copyright (C) 2020 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions. There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
> I'm still not clear if this is a GCC problem or a code problem,
> although Dan pointed out on the list that SIZE_MAX is the largest
> size_t, so I guess our code seems OK ...
The error message seems to indicate that the compiler believes a pointer
cannot reference an object larger than SSIZE_MAX and thus doesn't like
the use of SIZE_MAX.
This is quite strange though, given that malloc() and other C functions
pretty much all use size_t for object sizes, not ssize_t.
I think we should try reporting to the GCC maintainers for an opinion
on whether its a compiler bug or not
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 :|
More information about the Libguestfs
mailing list