diff mbox series

Fails to build on arm{el,hf} with 64bit time_t: export-cache.c:110:51: error: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘time_t’ {aka ‘long long int’} [-Werror=format=]

Message ID ZhGfUpXclZeoZ_az@eldamar.lan (mailing list archive)
State New
Headers show
Series Fails to build on arm{el,hf} with 64bit time_t: export-cache.c:110:51: error: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘time_t’ {aka ‘long long int’} [-Werror=format=] | expand

Commit Message

Salvatore Bonaccorso April 6, 2024, 7:15 p.m. UTC
Hi Chuck, hi Steve,

In Debian, as you might have heard there is a 64bit time_t
transition[1] ongoing affecting the armel and armhf architectures.
While doing so, nfs-utils was found to fail to build for those
architectures after the switch, reported in Debian as [2]. Vladimir
Petko from Ubuntu has as well filled it in [3].

 [1]: https://lists.debian.org/debian-devel-announce/2024/02/msg00005.html
 [2]: https://bugs.debian.org/1067829
 [3]: https://bugzilla.kernel.org/show_bug.cgi?id=218540

The report is full-quoted below. 

Vladimir Petko has created a patch in the bugzilla which I'm attaching
here as well. If this is not an acceptable format due to missing
Signed-off's I'm attaching a variant with a Suggested-by for Vladimir
to properly credit the patch origin.

Let me know if that works. I changed it slightly and only casting to
long long, and made it almost checkpatch clean.

Regards,
Salvatore

----- Forwarded message from Sebastian Ramacher <sramacher@debian.org> -----

From: Sebastian Ramacher <sramacher@debian.org>
Resent-From: Sebastian Ramacher <sramacher@debian.org>
Reply-To: Sebastian Ramacher <sramacher@debian.org>, 1067829@bugs.debian.org
Date: Wed, 27 Mar 2024 11:02:25 +0100
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: Bug#1067829: nfs-utils: FTBFS on arm{el,hf}: export-cache.c:110:51: error: format ‘%ld’ expects argument of
	type ‘long int’, but argument 4 has type ‘time_t’ {aka ‘long long int’} [-Werror=format=]
Delivered-To: submit@bugs.debian.org
Message-ID: <ZgPusfnkCCvhalve@ramacher.at>

Source: nfs-utils
Version: 1:2.6.4-3
Severity: serious
Tags: ftbfs
Justification: fails to build from source (but built successfully in the past)
X-Debbugs-Cc: sramacher@debian.org

https://buildd.debian.org/status/fetch.php?pkg=nfs-utils&arch=armel&ver=1%3A2.6.4-3%2Bb2&stamp=1711452552&raw=0

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../support/include -I/usr/include/tirpc -I/usr/include/libxml2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -pipe -Wall -Wextra -Werror=strict-prototypes -Werror=missing-prototypes -Werror=missing-declarations -Werror=format=2 -Werror=undef -Werror=missing-include-dirs -Werror=strict-aliasing=2 -Werror=init-self -Werror=implicit-function-declaration -Werror=return-type -Werror=switch -Werror=overflow -Werror=parentheses -Werror=aggregate-return -Werror=unused-result -fno-strict-aliasing -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -Wno-cast-function-type -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -c xml.c  -fPIC -DPIC -o .libs/xml.o
export-cache.c: In function ‘junction_flush_exports_cache’:
export-cache.c:110:51: error: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘time_t’ {aka ‘long long int’} [-Werror=format=]
  110 |         snprintf(flushtime, sizeof(flushtime), "%ld\n", now);
      |                                                 ~~^     ~~~
      |                                                   |     |
      |                                                   |     time_t {aka long long int}
      |                                                   long int
      |                                                 %lld
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../support/include -I/usr/include/tirpc -I/usr/include/libxml2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -pipe -Wall -Wextra -Werror=strict-prototypes -Werror=missing-prototypes -Werror=missing-declarations -Werror=format=2 -Werror=undef -Werror=missing-include-dirs -Werror=strict-aliasing=2 -Werror=init-self -Werror=implicit-function-declaration -Werror=return-type -Werror=switch -Werror=overflow -Werror=parentheses -Werror=aggregate-return -Werror=unused-result -fno-strict-aliasing -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -Wno-cast-function-type -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -c display.c -o display.o >/dev/null 2>&1
cc1: some warnings being treated as errors
make[3]: *** [Makefile:489: export-cache.lo] Error 1
make[3]: *** Waiting for unfinished jobs....

Cheers

Comments

Chuck Lever April 6, 2024, 7:28 p.m. UTC | #1
> On Apr 6, 2024, at 3:15 PM, Salvatore Bonaccorso <carnil@debian.org> wrote:
> 
> Hi Chuck, hi Steve,
> 
> In Debian, as you might have heard there is a 64bit time_t
> transition[1] ongoing affecting the armel and armhf architectures.
> While doing so, nfs-utils was found to fail to build for those
> architectures after the switch, reported in Debian as [2]. Vladimir
> Petko from Ubuntu has as well filled it in [3].
> 
> [1]: https://lists.debian.org/debian-devel-announce/2024/02/msg00005.html
> [2]: https://bugs.debian.org/1067829
> [3]: https://bugzilla.kernel.org/show_bug.cgi?id=218540
> 
> The report is full-quoted below. 
> 
> Vladimir Petko has created a patch in the bugzilla which I'm attaching
> here as well. If this is not an acceptable format due to missing
> Signed-off's I'm attaching a variant with a Suggested-by for Vladimir
> to properly credit the patch origin.
> 
> Let me know if that works. I changed it slightly and only casting to
> long long, and made it almost checkpatch clean.

I suppose strftime(3) might be nicer, but this works.

Reviewed-by: Chuck Lever <chuck.lever@oracle.com <mailto:chuck.lever@oracle.com>>


> Regards,
> Salvatore
> 
> ----- Forwarded message from Sebastian Ramacher <sramacher@debian.org> -----
> 
> From: Sebastian Ramacher <sramacher@debian.org>
> Resent-From: Sebastian Ramacher <sramacher@debian.org>
> Reply-To: Sebastian Ramacher <sramacher@debian.org>, 1067829@bugs.debian.org
> Date: Wed, 27 Mar 2024 11:02:25 +0100
> To: Debian Bug Tracking System <submit@bugs.debian.org>
> Subject: Bug#1067829: nfs-utils: FTBFS on arm{el,hf}: export-cache.c:110:51: error: format ‘%ld’ expects argument of
> type ‘long int’, but argument 4 has type ‘time_t’ {aka ‘long long int’} [-Werror=format=]
> Delivered-To: submit@bugs.debian.org
> Message-ID: <ZgPusfnkCCvhalve@ramacher.at>
> 
> Source: nfs-utils
> Version: 1:2.6.4-3
> Severity: serious
> Tags: ftbfs
> Justification: fails to build from source (but built successfully in the past)
> X-Debbugs-Cc: sramacher@debian.org
> 
> https://buildd.debian.org/status/fetch.php?pkg=nfs-utils&arch=armel&ver=1%3A2.6.4-3%2Bb2&stamp=1711452552&raw=0
> 
> libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../support/include -I/usr/include/tirpc -I/usr/include/libxml2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -pipe -Wall -Wextra -Werror=strict-prototypes -Werror=missing-prototypes -Werror=missing-declarations -Werror=format=2 -Werror=undef -Werror=missing-include-dirs -Werror=strict-aliasing=2 -Werror=init-self -Werror=implicit-function-declaration -Werror=return-type -Werror=switch -Werror=overflow -Werror=parentheses -Werror=aggregate-return -Werror=unused-result -fno-strict-aliasing -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -Wno-cast-function-type -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -c xml.c  -fPIC -DPIC -o .libs/xml.o
> export-cache.c: In function ‘junction_flush_exports_cache’:
> export-cache.c:110:51: error: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘time_t’ {aka ‘long long int’} [-Werror=format=]
>  110 |         snprintf(flushtime, sizeof(flushtime), "%ld\n", now);
>      |                                                 ~~^     ~~~
>      |                                                   |     |
>      |                                                   |     time_t {aka long long int}
>      |                                                   long int
>      |                                                 %lld
> libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../support/include -I/usr/include/tirpc -I/usr/include/libxml2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -pipe -Wall -Wextra -Werror=strict-prototypes -Werror=missing-prototypes -Werror=missing-declarations -Werror=format=2 -Werror=undef -Werror=missing-include-dirs -Werror=strict-aliasing=2 -Werror=init-self -Werror=implicit-function-declaration -Werror=return-type -Werror=switch -Werror=overflow -Werror=parentheses -Werror=aggregate-return -Werror=unused-result -fno-strict-aliasing -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -Wno-cast-function-type -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -c display.c -o display.o >/dev/null 2>&1
> cc1: some warnings being treated as errors
> make[3]: *** [Makefile:489: export-cache.lo] Error 1
> make[3]: *** Waiting for unfinished jobs....
> 
> Cheers
> -- 
> Sebastian Ramacher
> 
> ----- End forwarded message -----
> <armhf-time-t-format-error.patch><0001-junction-export-cache-cast-to-a-type-with-a-known-si.patch>

--
Chuck Lever
Salvatore Bonaccorso May 2, 2024, 5 a.m. UTC | #2
Hi all,

On Sat, Apr 06, 2024 at 07:28:58PM +0000, Chuck Lever III wrote:
> 
> 
> > On Apr 6, 2024, at 3:15 PM, Salvatore Bonaccorso <carnil@debian.org> wrote:
> > 
> > Hi Chuck, hi Steve,
> > 
> > In Debian, as you might have heard there is a 64bit time_t
> > transition[1] ongoing affecting the armel and armhf architectures.
> > While doing so, nfs-utils was found to fail to build for those
> > architectures after the switch, reported in Debian as [2]. Vladimir
> > Petko from Ubuntu has as well filled it in [3].
> > 
> > [1]: https://lists.debian.org/debian-devel-announce/2024/02/msg00005.html
> > [2]: https://bugs.debian.org/1067829
> > [3]: https://bugzilla.kernel.org/show_bug.cgi?id=218540
> > 
> > The report is full-quoted below. 
> > 
> > Vladimir Petko has created a patch in the bugzilla which I'm attaching
> > here as well. If this is not an acceptable format due to missing
> > Signed-off's I'm attaching a variant with a Suggested-by for Vladimir
> > to properly credit the patch origin.
> > 
> > Let me know if that works. I changed it slightly and only casting to
> > long long, and made it almost checkpatch clean.
> 
> I suppose strftime(3) might be nicer, but this works.
> 
> Reviewed-by: Chuck Lever <chuck.lever@oracle.com <mailto:chuck.lever@oracle.com>>

I noticed this is not yet applied to the repository, do you need
anything else from me or did it just felt trouch the cracks or
actually queued?

Asking since if you want to have it done differently I will then
follow suit downstream as well in Debian, where we have for now
applied the submitted patch.

Regards,
Salvatore
Chuck Lever May 2, 2024, 12:57 p.m. UTC | #3
On Thu, May 02, 2024 at 07:00:44AM +0200, Salvatore Bonaccorso wrote:
> Hi all,
> 
> On Sat, Apr 06, 2024 at 07:28:58PM +0000, Chuck Lever III wrote:
> > 
> > 
> > > On Apr 6, 2024, at 3:15 PM, Salvatore Bonaccorso <carnil@debian.org> wrote:
> > > 
> > > Hi Chuck, hi Steve,
> > > 
> > > In Debian, as you might have heard there is a 64bit time_t
> > > transition[1] ongoing affecting the armel and armhf architectures.
> > > While doing so, nfs-utils was found to fail to build for those
> > > architectures after the switch, reported in Debian as [2]. Vladimir
> > > Petko from Ubuntu has as well filled it in [3].
> > > 
> > > [1]: https://lists.debian.org/debian-devel-announce/2024/02/msg00005.html
> > > [2]: https://bugs.debian.org/1067829
> > > [3]: https://bugzilla.kernel.org/show_bug.cgi?id=218540
> > > 
> > > The report is full-quoted below. 
> > > 
> > > Vladimir Petko has created a patch in the bugzilla which I'm attaching
> > > here as well. If this is not an acceptable format due to missing
> > > Signed-off's I'm attaching a variant with a Suggested-by for Vladimir
> > > to properly credit the patch origin.
> > > 
> > > Let me know if that works. I changed it slightly and only casting to
> > > long long, and made it almost checkpatch clean.
> > 
> > I suppose strftime(3) might be nicer, but this works.
> > 
> > Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
> 
> I noticed this is not yet applied to the repository, do you need
> anything else from me or did it just felt trouch the cracks or
> actually queued?
> 
> Asking since if you want to have it done differently I will then
> follow suit downstream as well in Debian, where we have for now
> applied the submitted patch.

Salvatore, can you resend the patch inline (not as an attachment)
 To: Steve, Cc: linux-nfs@ ?

Steve, see above for my Reviewed-by.
Salvatore Bonaccorso May 2, 2024, 1:55 p.m. UTC | #4
Hi,

On Thu, May 02, 2024 at 08:57:15AM -0400, Chuck Lever wrote:
> On Thu, May 02, 2024 at 07:00:44AM +0200, Salvatore Bonaccorso wrote:
> > Hi all,
> > 
> > On Sat, Apr 06, 2024 at 07:28:58PM +0000, Chuck Lever III wrote:
> > > 
> > > 
> > > > On Apr 6, 2024, at 3:15 PM, Salvatore Bonaccorso <carnil@debian.org> wrote:
> > > > 
> > > > Hi Chuck, hi Steve,
> > > > 
> > > > In Debian, as you might have heard there is a 64bit time_t
> > > > transition[1] ongoing affecting the armel and armhf architectures.
> > > > While doing so, nfs-utils was found to fail to build for those
> > > > architectures after the switch, reported in Debian as [2]. Vladimir
> > > > Petko from Ubuntu has as well filled it in [3].
> > > > 
> > > > [1]: https://lists.debian.org/debian-devel-announce/2024/02/msg00005.html
> > > > [2]: https://bugs.debian.org/1067829
> > > > [3]: https://bugzilla.kernel.org/show_bug.cgi?id=218540
> > > > 
> > > > The report is full-quoted below. 
> > > > 
> > > > Vladimir Petko has created a patch in the bugzilla which I'm attaching
> > > > here as well. If this is not an acceptable format due to missing
> > > > Signed-off's I'm attaching a variant with a Suggested-by for Vladimir
> > > > to properly credit the patch origin.
> > > > 
> > > > Let me know if that works. I changed it slightly and only casting to
> > > > long long, and made it almost checkpatch clean.
> > > 
> > > I suppose strftime(3) might be nicer, but this works.
> > > 
> > > Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
> > 
> > I noticed this is not yet applied to the repository, do you need
> > anything else from me or did it just felt trouch the cracks or
> > actually queued?
> > 
> > Asking since if you want to have it done differently I will then
> > follow suit downstream as well in Debian, where we have for now
> > applied the submitted patch.
> 
> Salvatore, can you resend the patch inline (not as an attachment)
>  To: Steve, Cc: linux-nfs@ ?

Yes sure, sorry about it. Here it is submitted:

https://lore.kernel.org/linux-nfs/20240502135320.3445429-1-carnil@debian.org/T/#u

Regards,
Salvatore
diff mbox series

Patch

From 774394df352c249775d51d5d6e3effa775096b4f Mon Sep 17 00:00:00 2001
From: Salvatore Bonaccorso <carnil@debian.org>
Date: Sat, 6 Apr 2024 20:48:43 +0200
Subject: [PATCH] junction: export-cache: cast to a type with a known size to
 ensure sprintf works
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

As reported in Debian, with the 64bit time_t transition for the armel
and armhf architecture, it was found that nfs-utils fails to compile
with:

	libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../support/include -I/usr/include/tirpc -I/usr/include/libxml2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -pipe -Wall -Wextra -Werror=strict-prototypes -Werror=missing-prototypes -Werror=missing-declarations -Werror=format=2 -Werror=undef -Werror=missing-include-dirs -Werror=strict-aliasing=2 -Werror=init-self -Werror=implicit-function-declaration -Werror=return-type -Werror=switch -Werror=overflow -Werror=parentheses -Werror=aggregate-return -Werror=unused-result -fno-strict-aliasing -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -Wno-cast-function-type -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -c xml.c  -fPIC -DPIC -o .libs/xml.o
	export-cache.c: In function ‘junction_flush_exports_cache’:
	export-cache.c:110:51: error: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘time_t’ {aka ‘long long int’} [-Werror=format=]
	  110 |         snprintf(flushtime, sizeof(flushtime), "%ld\n", now);
	      |                                                 ~~^     ~~~
	      |                                                   |     |
	      |                                                   |     time_t {aka long long int}
	      |                                                   long int
	      |                                                 %lld

time_t is not guaranteed to be 64-bit, so it must be coerced into the expected
type for printf. Cast it to long long.

Reported-by: Vladimir Petko <vladimir.petko@canonical.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218540
Link: https://bugs.debian.org/1067829
Link: https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/2055349
Fixes: 494d22396d3d ("Add LDAP-free version of libjunction to nfs-utils")
Suggested-by: Vladimir Petko <vladimir.petko@canonical.com>
Signed-off-by: Salvatore Bonaccorso <carnil@debian.org>
---
 support/junction/export-cache.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/support/junction/export-cache.c b/support/junction/export-cache.c
index 4e578c9b37b1..00187c019d60 100644
--- a/support/junction/export-cache.c
+++ b/support/junction/export-cache.c
@@ -107,7 +107,7 @@  junction_flush_exports_cache(void)
 		xlog(D_GENERAL, "%s: time(3) failed", __func__);
 		return FEDFS_ERR_SVRFAULT;
 	}
-	snprintf(flushtime, sizeof(flushtime), "%ld\n", now);
+	snprintf(flushtime, sizeof(flushtime), "%lld\n", (long long)now);
 
 	for (i = 0; junction_proc_files[i] != NULL; i++) {
 		retval = junction_write_time(junction_proc_files[i], flushtime);
-- 
2.43.0