Source: libvformat
Followup-For: Bug #1075216
Control: tags -1 ftbfs

Dear Maintainer,

I've investigated the FTBFS.

This library uses time_t in most places, but the public function
vf_date_string_to_time instead uses uint32_t. GCC14 catches the
mismatch and stops the build (Werror=security-format).
The proper fix here would be to change the function definition
and bump the library SONAME, however I am new to debian and I
don't think I'd be able to coordinate such a change.

Would you instead be willing to take a quick patch that disables
the build error and allows the build to continue, at least temporarily?

Otherwise please try to coordinate a SONAME bump and rebuild of
the reverse dependencies of this library. It would also need a rebuild
of the generated manpage.

Attaching a debdiff for the quick-fix, and a patch to show what would
be the proper fix instead.

PS: I don't know why the package versioning went from 1.13-12 to
1.13-12.1, so in the debdiff I'm proposing to go back to 1.13-13

PPS: I see you use gbp in salsa for hosting but I couldn't get the package
to build from those sources, so I'm sending a debdiff here instead of a
gitlab merge-request.

-- System Information:
Debian Release: trixie/sid
APT prefers noble-updates
APT policy: (500, 'noble-updates'), (500, 'noble-security'), (500, 'noble'), (100, 'noble-proposed'), (100, 'noble-backports')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 6.8.0-40-generic (SMP w/16 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru libvformat-1.13/debian/changelog libvformat-1.13/debian/changelog
--- libvformat-1.13/debian/changelog    2024-04-07 10:03:44.000000000 +0200
+++ libvformat-1.13/debian/changelog    2024-08-19 11:05:53.000000000 +0200
@@ -1,3 +1,15 @@
+libvformat (1.13-13) UNRELEASED; urgency=medium
+
+  * Disable -Wincompatible-pointer-types error.
+    This library uses time_t in most places, but the public function
+    vf_date_string_to_time instead uses uint32_t. GCC14 catches the
+    mismatch and stops the build (Werror=security-format).
+    The proper fix here would be to change the function definition
+    and bump the library SONAME; but for now let's just allow the
+    package to build again.
+
+ -- Alessandro Astone <alessandro.ast...@canonical.com>  Mon, 19 Aug 2024 
11:05:53 +0200
+
 libvformat (1.13-12.2) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru libvformat-1.13/debian/rules libvformat-1.13/debian/rules
--- libvformat-1.13/debian/rules        2020-08-10 23:55:14.000000000 +0200
+++ libvformat-1.13/debian/rules        2024-08-19 11:01:48.000000000 +0200
@@ -3,6 +3,7 @@
 # GNU copyright 1997 to 1999 by Joey Hess.
 
 export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+export DEB_CFLAGS_MAINT_APPEND=-Wno-error=incompatible-pointer-types
 
 %:
        dh $@
--- libvformat-1.13.orig/src/vf_access_calendar.c
+++ libvformat-1.13/src/vf_access_calendar.c
@@ -226,7 +226,7 @@ bool_t vf_get_prop_value_time(
  *---------------------------------------------------------------------------*/
 
 bool_t vf_date_string_to_time(
-    uint32_t *p_time,               /* Output time value */
+    time_t *p_time,               /* Output time value */
     const char *p_string            /* Input string */
     )
 {
@@ -296,7 +296,7 @@ bool_t vf_date_string_to_time(
             }
             else
             {
-                *p_time = (uint32_t)t;
+                *p_time = t;
             }
         }
     }
--- libvformat-1.13.orig/vformat/vf_iface.h
+++ libvformat-1.13/vformat/vf_iface.h
@@ -1203,7 +1203,7 @@ extern VFORMATDECLSPEC const char *vf_fi
  *---------------------------------------------------------------------------*/
 
 extern VFORMATDECLSPEC bool_t vf_date_string_to_time(
-    uint32_t *p_time,               /* Output time value */
+    time_t *p_time,               /* Output time value */
     const char *p_string            /* Input string */
     );
 

Reply via email to