Package: opensc
Version: 0.22.0-2
Severity: minor
Tags: patch
User: [email protected]
Usertags: origin-ubuntu kinetic ubuntu-patch

Hi Eric,

In Ubuntu, opensc was failing to build on ppc64el because we build using -O3
by default and the compiler when running at a higher optimization level was
detecting an overflow:

[...]
/bin/bash ../../libtool  --tag=CC --tag CC  --mode=compile gcc -DHAVE_CONFIG_H 
-I. -I../..  -D'OPENSC_CONF_PATH="/etc/opensc/opensc.conf"' 
-D'DEFAULT_SM_MODULE_PATH="/usr/lib/powerpc64le-linux-gnu"' 
-D'DEFAULT_SM_MODULE="libsmm-local.so"' -I../../src -Wdate-time 
-D_FORTIFY_SOURCE=2    -pthread -I/usr/include/PCSC  -Wall -Wextra 
-Wno-unused-parameter -Werror -Wstrict-aliasing=2 -g -O3 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -flto=auto -ffat-lto-objects -flto=auto 
-ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security 
-Wno-error=deprecated-declarations -Wno-error=maybe-uninitialized -c -o 
libopensc_la-card-starcos.lo `test -f 'card-starcos.c' || echo 
'./'`card-starcos.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. 
-DOPENSC_CONF_PATH=\"/etc/opensc/opensc.conf\" 
-DDEFAULT_SM_MODULE_PATH=\"/usr/lib/powerpc64le-linux-gnu\" 
-DDEFAULT_SM_MODULE=\"libsmm-local.so\" -I../../src -Wdate-time 
-D_FORTIFY_SOURCE=2 -pthread -I/usr/include/PCSC -Wall -Wextra 
-Wno-unused-parameter -Werror -Wstrict-aliasing=2 -g -O3 
-ffile-prefix-map=/<<PKGBUILDDIR>>=. -flto=auto -ffat-lto-objects -flto=auto 
-ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security 
-Wno-error=deprecated-declarations -Wno-error=maybe-uninitialized -c 
card-starcos.c  -fPIC -DPIC -o .libs/libopensc_la-card-starcos.o
[...]
In function ‘starcos_select_aid’,
    inlined from ‘starcos_select_file’ at card-starcos.c:868:11:
card-starcos.c:674:39: error: writing 1 byte into a region of size 0 
[-Werror=stringop-overflow=]
  674 |                         file->name[i] = aid[i];
      |                         ~~~~~~~~~~~~~~^~~~~~~~
In file included from ../../src/libopensc/opensc.h:42,
                 from asn1.h:28,
                 from card-starcos.c:29:
card-starcos.c: In function ‘starcos_select_file’:
../../src/libopensc/types.h:251:23: note: at offset 16 into destination object 
‘name’ of size 16
  251 |         unsigned char name[16]; /* DF name */
      |                       ^~~~
[...]

  (https://launchpad.net/ubuntu/+source/opensc/0.22.0-1ubuntu1/+build/22603195)

As far as I can tell this is a spurious error because the 'len' argument
could in practice never be greater than 16, so I worked around this by
suppressing -Werror=stringop-overflow as in the attached patch.

Since Debian doesn't ever build with -O3 by default, this is definitely a
low-priority issue.

Thanks for considering,
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                   https://www.debian.org/
[email protected]                                     [email protected]
diff -Nru opensc-0.22.0/debian/rules opensc-0.22.0/debian/rules
--- opensc-0.22.0/debian/rules  2022-01-31 07:02:55.000000000 +0100
+++ opensc-0.22.0/debian/rules  2022-05-02 03:49:53.000000000 +0200
@@ -1,7 +1,7 @@
 #!/usr/bin/make -f
 
 export DEB_CFLAGS_MAINT_APPEND = -Wno-error=deprecated-declarations \
-               -Wno-error=maybe-uninitialized
+               -Wno-error=maybe-uninitialized -Wno-error=stringop-overflow
 
 %:
        dh $@

Reply via email to