Subject: Bug#1097270: libshairport: ftbfs with GCC-15

From: Matthias Klose <[email-masked]>
Date: Mon, 17 Feb 2025 17:33:48 +0000

Package: src:libshairport
Version: 1.2.1~git20120510.cbed0c1-4
Severity: important
Tags: sid forky
User: [email-masked]
Usertags: ftbfs-gcc-15

[This bug is NOT 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-15/g++-15, but succeeds to build with gcc-14/g++-14. The
severity of this report will be raised before the forky release.

The full build log can be found at:
http://qa-logs.debian.net/2025/02/16/amd64exp/libshairport_1.2.1~git20120510.cbed0c1-4_unstable_gccexp.log.gz
The last lines of the build log are at the end of this report.

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

  apt-get -t=experimental install g++ 

GCC 15 now defaults to the C23/C++23 standards, exposing many FTBFS.
Other 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-15/porting_to.html

[...]
      |     ^~~
In file included from /usr/include/openssl/x509.h:36,
                 from /usr/include/openssl/ssl.h:32,
                 from shairport.c:41:
/usr/include/openssl/rsa.h:215:27: note: declared here
  215 | OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA *rsa);
      |                           ^~~~~~~~
shairport.c:720:5: warning: 'RSA_private_encrypt' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  720 |     RSA_private_encrypt(tCurSize, (unsigned char *)tChalResp, tTo, rsa, RSA_PKCS1_PADDING);
      |     ^~~~~~~~~~~~~~~~~~~
/usr/include/openssl/rsa.h:296:5: note: declared here
  296 | int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to,
      |     ^~~~~~~~~~~~~~~~~~~
shairport.c:730:5: warning: 'RSA_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  730 |     RSA_free(rsa);
      |     ^~~~~~~~
/usr/include/openssl/rsa.h:304:28: note: declared here
  304 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
      |                            ^~~~~~~~
shairport.c: In function 'parseMessage':
shairport.c:838:7: warning: 'RSA_size' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  838 |       char *tDecryptedKey = malloc(RSA_size(rsa) * sizeof(char)); // Need to Free Decrypted key
      |       ^~~~
/usr/include/openssl/rsa.h:215:27: note: declared here
  215 | OSSL_DEPRECATEDIN_3_0 int RSA_size(const RSA *rsa);
      |                           ^~~~~~~~
shairport.c:840:7: warning: 'RSA_private_decrypt' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  840 |       if(RSA_private_decrypt(tKeySize, (unsigned char *)tDecodedAesKey,
      |       ^~
/usr/include/openssl/rsa.h:302:5: note: declared here
  302 | int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to,
      |     ^~~~~~~~~~~~~~~~~~~
shairport.c:850:7: warning: 'RSA_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  850 |       RSA_free(rsa);
      |       ^~~~~~~~
/usr/include/openssl/rsa.h:304:28: note: declared here
  304 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
      |                            ^~~~~~~~
shairport.c: In function 'loadKey':
shairport.c:1380:3: warning: 'PEM_read_bio_RSAPrivateKey' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
 1380 |   RSA *rsa = PEM_read_bio_RSAPrivateKey(tBio, NULL, NULL, NULL); //NULL, NULL, NULL);
      |   ^~~
In file included from /usr/include/openssl/ssl.h:37:
/usr/include/openssl/pem.h:452:1: note: declared here
  452 | DECLARE_PEM_rw_cb_attr(OSSL_DEPRECATEDIN_3_0, RSAPrivateKey, RSA)
      | ^~~~~~~~~~~~~~~~~~~~~~
shairport.c:1382:3: warning: 'RSA_check_key' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
 1382 |   __shairport_xprintf("RSA Key: %d\n", RSA_check_key(rsa));
      |   ^~~~~~~~~~~~~~~~~~~
/usr/include/openssl/rsa.h:289:27: note: declared here
  289 | OSSL_DEPRECATEDIN_3_0 int RSA_check_key(const RSA *);
      |                           ^~~~~~~~~~~~~
shairport.c: In function 'shairport_main':
shairport.c:262:7: warning: ignoring return value of 'dup' declared with attribute 'warn_unused_result' [-Wunused-result]
  262 |       dup(tIdx);
      |       ^~~~~~~~~
shairport.c:263:7: warning: ignoring return value of 'dup' declared with attribute 'warn_unused_result' [-Wunused-result]
  263 |       dup(tIdx);
      |       ^~~~~~~~~
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,--no-undefined -g -O2 -Werror=implicit-function-declaration "-ffile-prefix-map=/build/reproducible-path/libshairport-1.2.1~git20120510.cbed0c1=." -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c socketlib.c -o libshairport_la-socketlib.o >/dev/null 2>&1
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,--no-undefined -g -O2 -Werror=implicit-function-declaration "-ffile-prefix-map=/build/reproducible-path/libshairport-1.2.1~git20120510.cbed0c1=." -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c alac.c -o libshairport_la-alac.o >/dev/null 2>&1
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,--no-undefined -g -O2 -Werror=implicit-function-declaration "-ffile-prefix-map=/build/reproducible-path/libshairport-1.2.1~git20120510.cbed0c1=." -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c shairport.c -o libshairport_la-shairport.o >/dev/null 2>&1
make[3]: Leaving directory '/build/reproducible-path/libshairport-1.2.1~git20120510.cbed0c1/src'
make[2]: *** [Makefile:460: all-recursive] Error 1
make[2]: Leaving directory '/build/reproducible-path/libshairport-1.2.1~git20120510.cbed0c1'
make[1]: *** [Makefile:369: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/libshairport-1.2.1~git20120510.cbed0c1'
dh_auto_build: error: make -j8 returned exit code 2
make: *** [debian/rules:4: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2