Subject: sniffit: ftbfs with GCC-14

From: Matthias Klose <[email-masked]>
Date: Wed, 03 Jul 2024 12:44:29 +0000

Package: src:sniffit
Version: 0.6-1
Severity: important
Tags: sid trixie
User: [email-masked]
Usertags: ftbfs-gcc-14

[This bug is targeted to the upcoming trixie release]

Please keep this issue open in the bug tracker for the package it
was filed for.  If a fix in another package is required, please
file a bug for the other package (or clone), and add a block in this
package. Please keep the issue open until the package can be built in
a follow-up test rebuild.

The package fails to build in a test rebuild on at least amd64 with
gcc-14/g++-14, but succeeds to build with gcc-13/g++-13. The
severity of this report will be raised before the trixie release.

The full build log can be found at:
http://qa-logs.debian.net/2024/07/01/sniffit_0.6-1_unstable_gccexp.log
The last lines of the build log are at the end of this report.

To build with GCC 14, either set CC=gcc-14 CXX=g++-14 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.

  apt-get -t=experimental install g++ 

Common build failures are new warnings resulting in build failures with
-Werror turned on, or new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-14/porting_to.html

[...]
 1829 | #ifdef PLUGIN7_INIT()
      |                    ^
sniffit.c:1833:20: warning: extra tokens at end of #ifdef directive
 1833 | #ifdef PLUGIN8_INIT()
      |                    ^
sniffit.c:1837:20: warning: extra tokens at end of #ifdef directive
 1837 | #ifdef PLUGIN9_INIT()
      |                    ^
sniffit.c:1865:24: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]
 1865 |       printf ("Shared %d\n", memsize);
      |                       ~^     ~~~~~~~
      |                        |     |
      |                        int   long unsigned int
      |                       %ld
sniffit.c:1868:18: error: assignment to ‘int *’ from incompatible pointer type ‘char *’ [-Wincompatible-pointer-types]
 1868 |       DATAlength = timing + sizeof (int);
      |                  ^
sniffit.c:1869:23: error: assignment to ‘char *’ from incompatible pointer type ‘int *’ [-Wincompatible-pointer-types]
 1869 |       connection_data = DATAlength + sizeof (int);
      |                       ^
sniffit.c:1870:18: error: assignment to ‘int *’ from incompatible pointer type ‘char *’ [-Wincompatible-pointer-types]
 1870 |       LISTlength = connection_data + LENGTH_OF_INTERPROC_DATA;
      |                  ^
sniffit.c:1871:12: error: assignment to ‘struct snif_mask *’ from incompatible pointer type ‘int *’ [-Wincompatible-pointer-types]
 1871 |       mask = LISTlength + sizeof (int);
      |            ^
sniffit.c:1872:26: error: assignment to ‘char *’ from incompatible pointer type ‘struct snif_mask *’ [-Wincompatible-pointer-types]
 1872 |       logged_connections = mask + sizeof (struct snif_mask);
      |                          ^
sniffit.c:1875:25: error: assignment to ‘unsigned int *’ from incompatible pointer type ‘char *’ [-Wincompatible-pointer-types]
 1875 |       TCP_nr_of_packets = running_connections + (sizeof (struct shared_conn_data) * CONNECTION_CAPACITY);
      |                         ^
sniffit.c:1876:28: error: assignment to ‘long unsigned int *’ from incompatible pointer type ‘unsigned int *’ [-Wincompatible-pointer-types]
 1876 |       TCP_bytes_in_packets = TCP_nr_of_packets + sizeof (int);
      |                            ^
sniffit.c:1877:26: error: assignment to ‘unsigned int *’ from incompatible pointer type ‘long unsigned int *’ [-Wincompatible-pointer-types]
 1877 |       ICMP_nr_of_packets = TCP_bytes_in_packets + sizeof (unsigned long);
      |                          ^
sniffit.c:1879:28: error: assignment to ‘long unsigned int *’ from incompatible pointer type ‘unsigned int *’ [-Wincompatible-pointer-types]
 1879 |       UDP_bytes_in_packets = UDP_nr_of_packets + sizeof (int);
      |                            ^
sniffit.c:1880:24: error: assignment to ‘unsigned int *’ from incompatible pointer type ‘long unsigned int *’ [-Wincompatible-pointer-types]
 1880 |       IP_nr_of_packets = UDP_bytes_in_packets + sizeof (unsigned long);
      |                        ^
sniffit.c:1895:32: error: passing argument 3 of ‘pcap_loop’ from incompatible pointer type [-Wincompatible-pointer-types]
 1895 |                                interactive_packethandler, NULL) < 0)
      |                                ^~~~~~~~~~~~~~~~~~~~~~~~~
      |                                |
      |                                void (* (*)(char *, const struct packetheader *, const unsigned char *))(u_char *, const struct pcap_pkthdr *, const u_char *) {aka void (* (*)(char *, const struct packetheader *, const unsigned char *))(unsigned char *, const struct pcap_pkthdr *, const unsigned char *)}
/usr/include/pcap/pcap.h:565:42: note: expected ‘pcap_handler’ {aka ‘void (*)(unsigned char *, const struct pcap_pkthdr *, const unsigned char *)’} but argument is of type ‘void (* (*)(char *, const struct packetheader *, const unsigned char *))(u_char *, const struct pcap_pkthdr *, const u_char *)’ {aka ‘void (* (*)(char *, const struct packetheader *, const unsigned char *))(unsigned char *, const struct pcap_pkthdr *, const unsigned char *)’}
  565 | PCAP_API int    pcap_loop(pcap_t *, int, pcap_handler, u_char *);
      |                                          ^~~~~~~~~~~~
sniffit.c:1928:41: error: passing argument 3 of ‘pcap_loop’ from incompatible pointer type [-Wincompatible-pointer-types]
 1928 |       switch (pcap_loop (dev_desc, CNT, packethandler, (unsigned char *) &ipaddr))
      |                                         ^~~~~~~~~~~~~
      |                                         |
      |                                         void (* (*)(unsigned char *, const struct packetheader *, const unsigned char *))(u_char *, const struct pcap_pkthdr *, const u_char *) {aka void (* (*)(unsigned char *, const struct packetheader *, const unsigned char *))(unsigned char *, const struct pcap_pkthdr *, const unsigned char *)}
/usr/include/pcap/pcap.h:565:42: note: expected ‘pcap_handler’ {aka ‘void (*)(unsigned char *, const struct pcap_pkthdr *, const unsigned char *)’} but argument is of type ‘void (* (*)(unsigned char *, const struct packetheader *, const unsigned char *))(u_char *, const struct pcap_pkthdr *, const u_char *)’ {aka ‘void (* (*)(unsigned char *, const struct packetheader *, const unsigned char *))(unsigned char *, const struct pcap_pkthdr *, const unsigned char *)’}
  565 | PCAP_API int    pcap_loop(pcap_t *, int, pcap_handler, u_char *);
      |                                          ^~~~~~~~~~~~
make[3]: *** [Makefile:380: sn_interface.o] Error 1
make[3]: *** [Makefile:380: sniffit.o] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/src'
make[2]: *** [Makefile:483: all-recursive] Error 1
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[1]: *** [Makefile:338: all] Error 2
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
dh_auto_build: error: make -j8 returned exit code 2
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2