mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
GCC 7.0.1 can determine if there is likely to be sufficient space in
the output buffer when using sprintf/snprintf, based on the format
string.
The errors were all either of this form:
bindtests.c:717:29: error: '%zu' directive output may be truncated writing between 1 and 19 bytes into a region of size 16 [-Werror=format-truncation=]
snprintf (strs[i], 16, "%zu", i);
^~~
bindtests.c:717:28: note: directive argument in the range [0, 2305843009213693951]
snprintf (strs[i], 16, "%zu", i);
^~~~~
or this form:
sync.c: In function 'fsync_devices':
sync.c:108:50: error: '%s' directive output may be truncated writing up to 255 bytes into a region of size 251 [-Werror=format-truncation=]
snprintf (dev_path, sizeof dev_path, "/dev/%s", d->d_name);
^~
Fixed by converting these into dynamic allocation, or making the
output buffer larger, whichever was easier.
There is a gnulib macro we can use to make this simpler for integers.
It requires a new gnulib module (intprops), but it turns out that we
were already pulling that in through dependencies, so the change to
bootstrap is a no-op. (thanks: Dan Berrange)
122 lines
1.7 KiB
Bash
Executable File
122 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
usage() {
|
|
echo >&2 "\
|
|
Usage: $0 [OPTION]...
|
|
Bootstrap this package from the checked-out sources.
|
|
"
|
|
}
|
|
|
|
for option
|
|
do
|
|
case $option in
|
|
--help)
|
|
usage
|
|
exit;;
|
|
*)
|
|
echo >&2 "$0: $option: unknown option"
|
|
exit 1;;
|
|
esac
|
|
done
|
|
|
|
# Get gnulib files.
|
|
|
|
echo "$0: getting gnulib files..."
|
|
git submodule init || exit $?
|
|
git submodule update || exit $?
|
|
GNULIB_SRCDIR=.gnulib
|
|
|
|
# Autoreconf runs aclocal before libtoolize, which causes spurious
|
|
# warnings if the initial aclocal is confused by the libtoolized
|
|
# (or worse out-of-date) macro directory.
|
|
libtoolize --copy --install
|
|
|
|
gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
|
|
<$gnulib_tool || exit
|
|
|
|
modules='
|
|
accept4
|
|
areadlink
|
|
areadlinkat
|
|
arpa_inet
|
|
base64
|
|
byteswap
|
|
c-ctype
|
|
cloexec
|
|
closeout
|
|
connect
|
|
dup3
|
|
error
|
|
filevercmp
|
|
fstatat
|
|
fsusage
|
|
fts
|
|
full-read
|
|
full-write
|
|
futimens
|
|
getaddrinfo
|
|
getline
|
|
getprogname
|
|
gitlog-to-changelog
|
|
glob
|
|
gnu-make
|
|
gnumakefile
|
|
hash
|
|
hash-pjw
|
|
human
|
|
iconv
|
|
ignore-value
|
|
intprops
|
|
lock
|
|
maintainer-makefile
|
|
manywarnings
|
|
memmem
|
|
mkdtemp
|
|
mkstemps
|
|
netdb
|
|
netinet_in
|
|
openat
|
|
perror
|
|
pipe2
|
|
pread
|
|
ptsname_r
|
|
read-file
|
|
readlink
|
|
select
|
|
setenv
|
|
sleep
|
|
socket
|
|
stat-time
|
|
strchrnul
|
|
strerror
|
|
strndup
|
|
symlinkat
|
|
sys_select
|
|
sys_wait
|
|
vasprintf
|
|
vc-list-files
|
|
warnings
|
|
xalloc
|
|
xalloc-die
|
|
xgetcwd
|
|
xstrtol
|
|
xstrtoll
|
|
xvasprintf
|
|
'
|
|
|
|
# If any tests fail, avoid including them by adding them to
|
|
# this list.
|
|
avoid="--avoid=dummy --avoid=getlogin_r-tests"
|
|
|
|
$gnulib_tool \
|
|
$avoid \
|
|
--with-tests \
|
|
--m4-base=m4 \
|
|
--source-base=gnulib/lib \
|
|
--tests-base=gnulib/tests \
|
|
--libtool \
|
|
--import $modules
|
|
|
|
# Disable autopoint and libtoolize, since they were already done above.
|
|
AUTOPOINT=true LIBTOOLIZE=true autoreconf --verbose --install
|