On Wed, 22 Nov 2023, Ahelenia Ziemiańska wrote: > This, naturally, produces a warning on x32 (and other ILP32 platforms > with 64-bit off_t, presumably, but you need to ask for it explicitly > there usually): > gcc -DHAVE_CONFIG_H -I. -I../../support/include -D_GNU_SOURCE -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -g -O2 -ffile-prefix-map=/tmp/nfs-utils-2.6.3=. -specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -ffile-prefix-map=/tmp/nfs-utils-2.6.3=. -specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -c -o testlk-testlk.o `test -f 'testlk.c' || echo './'`testlk.c > testlk.c: In function ‘main’: > testlk.c:84:66: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 4 has type ‘__off_t’ {aka ‘long long int’} [-Wformat=] > 84 | printf("%s: conflicting lock by %d on (%zd;%zd)\n", > | ~~^ > | | > | int > | %lld > 85 | fname, fl.l_pid, fl.l_start, fl.l_len); > | ~~~~~~~~~~ > | | > | __off_t {aka long long int} > testlk.c:84:70: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 5 has type ‘__off_t’ {aka ‘long long int’} [-Wformat=] > 84 | printf("%s: conflicting lock by %d on (%zd;%zd)\n", > | ~~^ > | | > | int > | %lld > 85 | fname, fl.l_pid, fl.l_start, fl.l_len); > | ~~~~~~~~ > | | > | __off_t {aka long long int} > > Upcast to long long, doesn't really matter. > > It does, of course, raise the question of whether other bits of > nfs-utils do something equally broken that just isn't caught by the > format validator. > > Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@xxxxxxxxxxxxxxxxxx> > --- > Same as v1: <44adec629186e220ee5d8fd936980ac4a33dc510.1693754442.git.nabijaczleweli@xxxxxxxxxxxxxxxxxx> > > tools/locktest/testlk.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/locktest/testlk.c b/tools/locktest/testlk.c > index ea51f788..c9bd6bac 100644 > --- a/tools/locktest/testlk.c > +++ b/tools/locktest/testlk.c > @@ -81,8 +81,8 @@ main(int argc, char **argv) > if (fl.l_type == F_UNLCK) { > printf("%s: no conflicting lock\n", fname); > } else { > - printf("%s: conflicting lock by %d on (%zd;%zd)\n", > - fname, fl.l_pid, fl.l_start, fl.l_len); > + printf("%s: conflicting lock by %d on (%lld;%lld)\n", > + fname, fl.l_pid, (long long)fl.l_start, (long long)fl.l_len); > } > return 0; > } > -- > 2.39.2 > Reviewed-by: NeilBrown <neilb@xxxxxxx> Thanks, NeilBrown