Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pcsc-lite for openSUSE:Factory 
checked in at 2022-06-17 21:20:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pcsc-lite (Old)
 and      /work/SRC/openSUSE:Factory/.pcsc-lite.new.1548 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pcsc-lite"

Fri Jun 17 21:20:12 2022 rev:94 rq:982209 version:1.9.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/pcsc-lite/pcsc-lite.changes      2022-05-16 
18:09:45.213337161 +0200
+++ /work/SRC/openSUSE:Factory/.pcsc-lite.new.1548/pcsc-lite.changes    
2022-06-17 21:22:29.618772746 +0200
@@ -1,0 +2,11 @@
+Sun Jun 12 09:56:11 UTC 2022 - Axel Braun <axel.br...@gmx.de>
+
+- version 1.9.8
+  * Install install_spy.sh & uninstall_spy.sh scripts in docdir
+  * SCardTransmit(): do not fail if receive buffer is "too large"
+  * SCardControl(): do not fail if receive buffer is "too large"
+  * fix some memory leaks on shutdown
+  * use a better random number generator
+  * Some other minor improvements
+
+-------------------------------------------------------------------

Old:
----
  pcsc-lite-1.9.7.tar.bz2
  pcsc-lite-1.9.7.tar.bz2.asc

New:
----
  pcsc-lite-1.9.8.tar.bz2
  pcsc-lite-1.9.8.tar.bz2.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pcsc-lite.spec ++++++
--- /var/tmp/diff_new_pack.fwScNm/_old  2022-06-17 21:22:30.146773032 +0200
+++ /var/tmp/diff_new_pack.fwScNm/_new  2022-06-17 21:22:30.146773032 +0200
@@ -26,7 +26,7 @@
 %define PKG_USER       scard
 %define PKG_GROUP      scard
 Name:           pcsc-lite
-Version:        1.9.7
+Version:        1.9.8
 Release:        0
 Summary:        PC/SC Smart Cards Library
 License:        BSD-3-Clause AND GPL-3.0-or-later
@@ -175,6 +175,8 @@
 %{_docdir}/%{name}/README.polkit
 %{_docdir}/%{name}/SECURITY
 %{_docdir}/%{name}/TODO
+%{_docdir}/%{name}/install_spy.sh
+%{_docdir}/%{name}/uninstall_spy.sh
 %doc %{_mandir}/man?/*.*
 %{_sbindir}/*
 %dir %{_sysconfdir}/reader.conf.d

++++++ pcsc-lite-1.9.7.tar.bz2 -> pcsc-lite-1.9.8.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/ChangeLog 
new/pcsc-lite-1.9.8/ChangeLog
--- old/pcsc-lite-1.9.7/ChangeLog       2022-05-13 13:06:54.000000000 +0200
+++ new/pcsc-lite-1.9.8/ChangeLog       2022-06-11 10:48:55.000000000 +0200
@@ -1,3 +1,13 @@
+1.9.8: Ludovic Rousseau
+11 June 2022
+- Install install_spy.sh & uninstall_spy.sh scripts in docdir
+- SCardTransmit(): do not fail if receive buffer is "too large"
+- SCardControl(): do not fail if receive buffer is "too large"
+- fix some memory leaks on shutdown
+- use a better random number generator
+- Some other minor improvements
+
+
 1.9.7: Ludovic Rousseau
 13 May 2022
 - disable strict compilation by default
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/ChangeLog.git 
new/pcsc-lite-1.9.8/ChangeLog.git
--- old/pcsc-lite-1.9.7/ChangeLog.git   2022-05-13 13:11:51.000000000 +0200
+++ new/pcsc-lite-1.9.8/ChangeLog.git   2022-06-11 10:51:28.000000000 +0200
@@ -1,4 +1,259 @@
-commit 5c45145d34b5e7382e0223477ff22de67ef97c77 (HEAD -> master)
+commit 41dc5a51321bc3198af36574f73dc007cab72a7d (HEAD -> master, tag: 1.9.8)
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Sat Jun 11 10:49:34 2022 +0200
+
+    Release 1.9.8
+    
+    Signed-off-by: Ludovic Rousseau <ludovic.rouss...@free.fr>
+
+ ChangeLog    | 10 ++++++++++
+ configure.ac |  2 +-
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+commit f7f80db5fae5f15c0d0ce2e6cd81a5c11c0a7510 (zotac/master, origin/master, 
origin/HEAD, github/master)
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Fri Jun 10 09:58:46 2022 +0200
+
+    Install install_spy.sh uninstall_spy.sh scripts
+    
+    They are installed in docdir i.e. ${datarootdir}/doc/${PACKAGE} where
+    datarootdir is ${prefix}/share
+    
+    On a Debian system with --prefix=/usr that is /usr/share/doc/pcsc-lite/
+    
+    The idea is to have the scripts included in the -dev package so that
+    they are easily available on user's computer.
+
+ src/spy/Makefile.am | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit c94aeb5ed933dbbe09af611a4829999860a0b293
+Author: Petr Mikhalicin <mkh199...@mail.ru>
+Date:   Thu May 26 18:03:38 2022 +0300
+
+    Add destructor library function
+    
+    Resolve: https://salsa.debian.org/rousseau/PCSC/-/issues/1
+
+ src/winscard_clnt.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+commit b312b45dd6a8d6c18ee09a411e7b3df6a0ab831f
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Wed Jun 1 17:56:55 2022 +0200
+
+    SCardControl(): do not fail if receive buffer is "too large"
+    
+    SCardControl() should not fail if the receive buffer is "too large"
+    i.e. larger than MAX_BUFFER_SIZE_EXTENDED.
+
+ src/winscard_clnt.c | 3 +--
+ src/winscard_svc.c  | 3 +--
+ 2 files changed, 2 insertions(+), 4 deletions(-)
+
+commit 6218f7bc878ba183a788de5f7441247f20d1adaf
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Wed Jun 1 17:50:23 2022 +0200
+
+    Test the check of SCardControl(..., cbRecvLength,..)
+    
+    SCardControl() should not fail if the receive buffer is "too large"
+    i.e. larger than MAX_BUFFER_SIZE_EXTENDED.
+
+ UnitaryTests/BufferOverflow_SCardControl.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 967e6e5495685bdedafb55d937fbef8a036f2c60
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Wed Jun 1 17:41:58 2022 +0200
+
+    SCardTransmit(): do not fail if receive buffer is "too large"
+    
+    SCardTransmit() should not fail if the receive buffer is "too large"
+    i.e. larger than MAX_BUFFER_SIZE_EXTENDED.
+    
+    Thanks to Frank Morgner for the bug report.
+    " Too strict checking on limits for SCardTransmit #137 "
+    https://github.com/LudovicRousseau/PCSC/issues/137
+
+ src/winscard_clnt.c | 3 +--
+ src/winscard_svc.c  | 3 +--
+ 2 files changed, 2 insertions(+), 4 deletions(-)
+
+commit 540026cdb77f42a91d1da5cdc7f607bbbbaffa70
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Wed Jun 1 17:39:59 2022 +0200
+
+    Test the check of SCardTransmit(..., pbRecvBuffer)
+    
+    SCardTransmit() should not fail if the receive buffer is "too large"
+    i.e. larger than MAX_BUFFER_SIZE_EXTENDED.
+
+ UnitaryTests/BufferOverflow_SCardTransmit.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+commit 210efa525f50e99821a10d91b8c861825e470d8b
+Author: Maksim Ivanov <em...@google.com>
+Date:   Sun May 29 16:31:19 2022 +0200
+
+    Fix leak of fullName on shutdown (#134)
+    
+    Free _readerTracker::fullName strings on shutdown in hotplug_libusb.
+
+ src/hotplug_libusb.c | 20 ++++++++++++++++----
+ 1 file changed, 16 insertions(+), 4 deletions(-)
+
+commit 652cbffa4cad54bbd93ad538c27ad6b169bc869f
+Author: Maksim Ivanov <em...@google.com>
+Date:   Sun May 29 16:27:47 2022 +0200
+
+    gitignore configure~, config.h.in~ (#136)
+    
+    Add the "configure~" and "config.h.in~" files to .gitignore. These files
+    are produced after running "bootstrap" more than once, and don't need to
+    be committed.
+
+ .gitignore | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 9879d1c2b78caafc757b883b0fe8ccc8e7c4548f
+Author: Maksim Ivanov <em...@google.com>
+Date:   Sun May 29 16:24:39 2022 +0200
+
+    Make sure AraKiriHotPlug false on libusb startup (#135)
+    
+    Reset the AraKiriHotPlug flag to false when starting libusb hotplug
+    search.
+    
+    This is not needed on the initial process startup, because the flag is
+    initialized to false, but allows to implement unit tests that need to
+    restart the previously stopped threads within the memory of the same
+    process.
+
+ src/hotplug_libusb.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit accaa9738ad6091603ead68e85d2217944624cee
+Author: Maksim Ivanov <em...@google.com>
+Date:   Fri May 27 17:19:21 2022 +0200
+
+    Fix double-free of CFBundleName on shutdown (#132)
+    
+    Fix the double-free of the _driverTracker::CFBundleName field in
+    HPRescanUsbBus() in hotplug_libusb on the shutdown path. The root cause
+    was reusing the same string pointer for multiple entries in the
+    driverTracker array.
+
+ src/hotplug_libusb.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit 1ab596a91032f0f4ce8d73454c33cae9129ab358
+Author: Maksim Ivanov <em...@google.com>
+Date:   Fri May 27 17:17:37 2022 +0200
+
+    Fix libusb_device list leak on shutdown (#133)
+    
+    Call libusb_free_device_list() before exiting the hotplug thread in
+    hotplug_libusb.c.
+
+ src/hotplug_libusb.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 7ca49799838cafcb403f63cce66624ff9fec15c8
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Sun May 22 13:23:03 2022 +0200
+
+    Revert change from SYS_RandomInt() SYS_RandomLong()
+    
+    The communication between pcscd and libpcsclite uses 32-bits variables
+    in the exchanged structures:
+            uint32_t hContext;
+            int32_t hCard;
+    
+    If we want to use 64-bits variables we need to also change the
+    pcscd-libpcsclite communication protocol and upgrade
+    PROTOCOL_VERSION_MAJOR.
+    
+    This would break many working configurations using flatpak for example.
+    
https://ludovicrousseau.blogspot.com/2022/02/accessing-smart-cards-from-inside.html
+
+ src/readerfactory.c |  4 ++--
+ src/sys_generic.h   |  2 +-
+ src/sys_unix.c      | 16 ++++++++--------
+ src/winscard.c      |  2 +-
+ 4 files changed, 12 insertions(+), 12 deletions(-)
+
+commit 8d60ec131318e97fe8fb2e8dec4bf1d8286e3407
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Sun May 22 13:01:53 2022 +0200
+
+    Handle getrandom() return value
+    
+    Fix:
+    sys_unix.c:110:15: error: ignoring return value of 'getrandom' declared 
with attribute 'warn_unused_result' [-Werror=unused-result]
+      110 |         (void)getrandom(c, sizeof c, 0);
+          |               ^~~~~~~~~~~~~~~~~~~~~~~~~
+
+ src/sys_unix.c | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+commit 2c3d3bfd3793334aa688d565343e9fab1796229e
+Author: Nikolaos Chatzikonstantinou <nchatz...@gmail.com>
+Date:   Mon May 16 11:01:55 2022 +0900
+
+    Change random number generator
+    
+    Four fixes are applied in this patch:
+    
+      1) The `SYS_RandomInt()` function is renamed to `SYS_RandomLong()`,
+      and its return type is now `long`. It no longer takes a range as
+      parameters for its random number generation; it always uses the full
+      range.
+      2) The `getrandom()` syscall is added to configure.ac as a requested
+      function.
+      3) The generator for `SYS_RandomLong()` is changed. The previous
+      generator was from the `rand()` function, but now it uses
+      `getrandom()` when available and otherwise `lrand48()`, from the POSIX
+      API.
+      4) The seeding of the generator is via `SYS_InitRandom()`. It is
+      modified accordingly to seed the new generator.
+    
+    Addresses Ref #9
+    "Improve SYS_RandomInt()"
+    https://salsa.debian.org/rousseau/PCSC/-/issues/9
+
+ configure.ac        |  2 +-
+ src/readerfactory.c |  4 ++--
+ src/sys_generic.h   |  2 +-
+ src/sys_unix.c      | 46 ++++++++++++++++++++++++++++++++--------------
+ src/winscard.c      |  2 +-
+ 5 files changed, 37 insertions(+), 19 deletions(-)
+
+commit 615160ff2f1e6f0f0ee324f7442b0068552d0068
+Author: Maksim Ivanov <em...@chromium.org>
+Date:   Wed May 18 21:38:13 2022 +0200
+
+    Fix shutdown memory leak of sReadersContexts
+    
+    RFCleanupReaders() should always free memory of sReadersContexts
+    (allocated in RFAllocateReaderSpace()), not only when the reader was
+    active.
+    
+    This was only a minor, shutdown-only, issue.
+
+ src/readerfactory.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+commit e1a0103c0e1e643dd8680610c33da5849c76ce4c (debug/master)
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Fri May 13 13:45:44 2022 +0200
+
+    github actions: use --enable-strict
+
+ .github/workflows/build.yml | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+commit 5c45145d34b5e7382e0223477ff22de67ef97c77 (tag: 1.9.7)
 Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
 Date:   Fri May 13 13:10:29 2022 +0200
 
@@ -19,7 +274,7 @@
  c.sh | 1 +
  1 file changed, 1 insertion(+)
 
-commit b3f795550713121eb12d0c5e5ee5c9ac7be37b13 (debug/master)
+commit b3f795550713121eb12d0c5e5ee5c9ac7be37b13
 Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
 Date:   Fri May 13 12:53:52 2022 +0200
 
@@ -31,7 +286,7 @@
  configure.ac | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
-commit c2ca47deab2cc802b09dd509aca118f73f63b169 (zotac/master, origin/master, 
origin/HEAD, github/master)
+commit c2ca47deab2cc802b09dd509aca118f73f63b169
 Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
 Date:   Thu May 12 21:43:10 2022 +0200
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/Makefile.in 
new/pcsc-lite-1.9.8/Makefile.in
--- old/pcsc-lite-1.9.7/Makefile.in     2022-05-13 13:08:12.000000000 +0200
+++ new/pcsc-lite-1.9.8/Makefile.in     2022-06-11 10:17:58.000000000 +0200
@@ -160,7 +160,7 @@
 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
        $(top_srcdir)/src/PCSC/pcsclite.h.in AUTHORS COPYING ChangeLog \
        INSTALL NEWS README TODO ar-lib compile config.guess \
-       config.sub depcomp install-sh ltmain.sh missing ylwrap
+       config.sub install-sh ltmain.sh missing ylwrap
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/config.h.in 
new/pcsc-lite-1.9.8/config.h.in
--- old/pcsc-lite-1.9.7/config.h.in     2022-05-13 13:08:15.000000000 +0200
+++ new/pcsc-lite-1.9.8/config.h.in     2022-05-22 12:16:50.000000000 +0200
@@ -40,6 +40,9 @@
 /* Define to 1 if you have the `getopt_long' function. */
 #undef HAVE_GETOPT_LONG
 
+/* Define to 1 if you have the `getrandom' function. */
+#undef HAVE_GETRANDOM
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/configure 
new/pcsc-lite-1.9.8/configure
--- old/pcsc-lite-1.9.7/configure       2022-05-13 13:08:11.000000000 +0200
+++ new/pcsc-lite-1.9.8/configure       2022-06-11 10:17:58.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for pcsc-lite 1.9.7.
+# Generated by GNU Autoconf 2.71 for pcsc-lite 1.9.8.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -618,8 +618,8 @@
 # Identity of this package.
 PACKAGE_NAME='pcsc-lite'
 PACKAGE_TARNAME='pcsc-lite'
-PACKAGE_VERSION='1.9.7'
-PACKAGE_STRING='pcsc-lite 1.9.7'
+PACKAGE_VERSION='1.9.8'
+PACKAGE_STRING='pcsc-lite 1.9.8'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1424,7 +1424,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures pcsc-lite 1.9.7 to adapt to many kinds of systems.
+\`configure' configures pcsc-lite 1.9.8 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1495,7 +1495,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of pcsc-lite 1.9.7:";;
+     short | recursive ) echo "Configuration of pcsc-lite 1.9.8:";;
    esac
   cat <<\_ACEOF
 
@@ -1649,7 +1649,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-pcsc-lite configure 1.9.7
+pcsc-lite configure 1.9.8
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2065,7 +2065,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by pcsc-lite $as_me 1.9.7, which was
+It was created by pcsc-lite $as_me 1.9.8, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3336,7 +3336,7 @@
 
 # Define the identity of the package.
  PACKAGE='pcsc-lite'
- VERSION='1.9.7'
+ VERSION='1.9.8'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -15396,6 +15396,12 @@
   printf "%s\n" "#define HAVE_VSNPRINTF 1" >>confdefs.h
 
 fi
+ac_fn_c_check_func "$LINENO" "getrandom" "ac_cv_func_getrandom"
+if test "x$ac_cv_func_getrandom" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h
+
+fi
 
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
@@ -17236,7 +17242,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by pcsc-lite $as_me 1.9.7, which was
+This file was extended by pcsc-lite $as_me 1.9.8, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17304,7 +17310,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-pcsc-lite config.status 1.9.7
+pcsc-lite config.status 1.9.8
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/configure.ac 
new/pcsc-lite-1.9.8/configure.ac
--- old/pcsc-lite-1.9.7/configure.ac    2022-05-13 13:07:34.000000000 +0200
+++ new/pcsc-lite-1.9.8/configure.ac    2022-06-11 10:17:25.000000000 +0200
@@ -3,7 +3,7 @@
 
 AC_PREREQ([2.69])
 
-AC_INIT([pcsc-lite],[1.9.7])
+AC_INIT([pcsc-lite],[1.9.8])
 AC_CONFIG_SRCDIR(src/pcscdaemon.c)
 AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip)
 AC_CONFIG_HEADERS([config.h])
@@ -109,7 +109,7 @@
 AC_FUNC_ERROR_AT_LINE
 AC_FUNC_STAT
 AC_FUNC_VPRINTF
-AC_CHECK_FUNCS(getopt_long nanosleep strerror vsnprintf)
+AC_CHECK_FUNCS(getopt_long nanosleep strerror vsnprintf getrandom)
 AC_FUNC_ALLOCA
 
 # C Compiler features
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/src/hotplug_libusb.c 
new/pcsc-lite-1.9.8/src/hotplug_libusb.c
--- old/pcsc-lite-1.9.7/src/hotplug_libusb.c    2022-05-12 21:48:51.000000000 
+0200
+++ new/pcsc-lite-1.9.8/src/hotplug_libusb.c    2022-06-10 09:47:10.000000000 
+0200
@@ -129,6 +129,7 @@
        struct _driverTracker *driver,
        struct _driverTracker *classdriver);
 static LONG HPRemoveHotPluggable(int reader_index);
+static void HPCleanupHotPluggable(int reader_index);
 
 static LONG HPReadBundleValues(void)
 {
@@ -212,7 +213,7 @@
                        if (rv)
                                CFBundleName = NULL;
                        else
-                               CFBundleName = strdup(list_get_at(values, 0));
+                               CFBundleName = list_get_at(values, 0);
 
                        /* while we find a nth ifdVendorID in Info.plist */
                        for (alias=0; alias<list_size(manuIDs); alias++)
@@ -232,7 +233,8 @@
                                driverTracker[listCount].bundleName = 
strdup(currFP->d_name);
                                driverTracker[listCount].libraryPath = 
strdup(fullLibPath);
                                driverTracker[listCount].ifdCapabilities = 
ifdCapabilities;
-                               driverTracker[listCount].CFBundleName = 
CFBundleName;
+                               driverTracker[listCount].CFBundleName =
+                                  CFBundleName ? strdup(CFBundleName) : NULL;
 
 #ifdef DEBUG_HOTPLUG
                                Log2(PCSC_LOG_INFO, "Found driver for: %s",
@@ -443,10 +445,19 @@
                        HPRemoveHotPluggable(i);
        }
 
+       /* free the libusb allocated list & devices */
+       libusb_free_device_list(devs, 1);
+
        if (AraKiriHotPlug)
        {
                int retval;
 
+               for (i=0; i<PCSCLITE_MAX_READERS_CONTEXTS; i++)
+               {
+                       if (readerTracker[i].fullName != NULL)
+                               HPCleanupHotPluggable(i);
+               }
+
                for (i=0; i<driverSize; i++)
                {
                        /* free strings allocated by strdup() */
@@ -460,9 +471,6 @@
                Log1(PCSC_LOG_INFO, "Hotplug stopped");
                pthread_exit(&retval);
        }
-
-       /* free the libusb allocated list & devices */
-       libusb_free_device_list(devs, 1);
 }
 
 static void * HPEstablishUSBNotifications(int pipefd[2])
@@ -549,6 +557,7 @@
 {
        int i;
 
+       AraKiriHotPlug = FALSE;
        for (i=0; i<PCSCLITE_MAX_READERS_CONTEXTS; i++)
        {
                readerTracker[i].status = READER_ABSENT;
@@ -769,16 +778,21 @@
 
        RFRemoveReader(readerTracker[reader_index].fullName,
                PCSCLITE_HP_BASE_PORT + reader_index, 
REMOVE_READER_FLAG_REMOVED);
-       free(readerTracker[reader_index].fullName);
-       readerTracker[reader_index].status = READER_ABSENT;
-       readerTracker[reader_index].bus_device[0] = '\0';
-       readerTracker[reader_index].fullName = NULL;
+       HPCleanupHotPluggable(reader_index);
 
        pthread_mutex_unlock(&usbNotifierMutex);
 
        return 1;
 }      /* End of function */
 
+static void HPCleanupHotPluggable(int reader_index)
+{
+       free(readerTracker[reader_index].fullName);
+       readerTracker[reader_index].status = READER_ABSENT;
+       readerTracker[reader_index].bus_device[0] = '\0';
+       readerTracker[reader_index].fullName = NULL;
+}      /* End of function */
+
 /**
  * Sets up callbacks for device hotplug events.
  */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/src/readerfactory.c 
new/pcsc-lite-1.9.8/src/readerfactory.c
--- old/pcsc-lite-1.9.7/src/readerfactory.c     2022-05-11 17:21:14.000000000 
+0200
+++ new/pcsc-lite-1.9.8/src/readerfactory.c     2022-05-22 13:15:20.000000000 
+0200
@@ -1186,7 +1186,7 @@
                /* FIXME: THIS IS NOT STRONG ENOUGH: A 128-bit token should be
                 * generated.  The client and server would associate token and 
hCard
                 * for authentication. */
-               randHandle = SYS_RandomInt(0, -1);
+               randHandle = SYS_RandomInt();
 
                /* do we already use this hCard somewhere? */
                ret = RFReaderInfoById(randHandle, &dummy_reader);
@@ -1396,11 +1396,10 @@
 
                        if (rv != SCARD_S_SUCCESS)
                                Log2(PCSC_LOG_ERROR, "RFRemoveReader error: 
0x%08lX", rv);
-
-                       free(sReadersContexts[i]);
-
-                       sReadersContexts[i] = NULL;
                }
+
+               free(sReadersContexts[i]);
+               sReadersContexts[i] = NULL;
        }
 
 #ifdef USE_SERIAL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/src/spy/Makefile.am 
new/pcsc-lite-1.9.8/src/spy/Makefile.am
--- old/pcsc-lite-1.9.7/src/spy/Makefile.am     2021-05-23 16:34:34.000000000 
+0200
+++ new/pcsc-lite-1.9.8/src/spy/Makefile.am     2022-06-10 09:55:01.000000000 
+0200
@@ -2,6 +2,7 @@
 
 lib_LTLIBRARIES = libpcscspy.la
 dist_bin_SCRIPTS = pcsc-spy
+dist_doc_DATA = install_spy.sh uninstall_spy.sh
 
 libpcscspy_la_SOURCES = \
        libpcscspy.c
@@ -16,5 +17,5 @@
                $(srcdir)/pcsc-spy.pod > $@
 endif
 
-EXTRA_DIST = install_spy.sh uninstall_spy.sh pcsc-spy.pod
+EXTRA_DIST = pcsc-spy.pod
 CLEANFILES = pcsc-spy.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/src/spy/Makefile.in 
new/pcsc-lite-1.9.8/src/spy/Makefile.in
--- old/pcsc-lite-1.9.7/src/spy/Makefile.in     2022-05-13 13:08:12.000000000 
+0200
+++ new/pcsc-lite-1.9.8/src/spy/Makefile.in     2022-06-11 10:17:58.000000000 
+0200
@@ -15,6 +15,7 @@
 @SET_MAKE@
 
 
+
 VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -98,7 +99,7 @@
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(dist_bin_SCRIPTS) \
-       $(am__DIST_COMMON)
+       $(dist_doc_DATA) $(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
@@ -131,7 +132,7 @@
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
-       "$(DESTDIR)$(man1dir)"
+       "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libpcscspy_la_LIBADD =
 am_libpcscspy_la_OBJECTS = libpcscspy.lo
@@ -186,6 +187,7 @@
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
+DATA = $(dist_doc_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -362,11 +364,12 @@
 AM_CPPFLAGS = -I$(top_srcdir)/src/PCSC -I$(top_builddir)/src/PCSC
 lib_LTLIBRARIES = libpcscspy.la
 dist_bin_SCRIPTS = pcsc-spy
+dist_doc_DATA = install_spy.sh uninstall_spy.sh
 libpcscspy_la_SOURCES = \
        libpcscspy.c
 
 @ENABLE_DOC_TRUE@man_MANS = pcsc-spy.1
-EXTRA_DIST = install_spy.sh uninstall_spy.sh pcsc-spy.pod
+EXTRA_DIST = pcsc-spy.pod
 CLEANFILES = pcsc-spy.1
 all: all-am
 
@@ -558,6 +561,27 @@
        } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
              -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
        dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-dist_docDATA: $(dist_doc_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
+       done
+
+uninstall-dist_docDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
 
 ID: $(am__tagged_files)
        $(am__define_uniq_tagged_files); mkid -fID $$unique
@@ -645,9 +669,9 @@
        done
 check-am: all-am
 check: check-am
-all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(MANS)
+all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(MANS) $(DATA)
 installdirs:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" 
"$(DESTDIR)$(man1dir)"; do \
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" 
"$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
@@ -704,7 +728,7 @@
 
 info-am:
 
-install-data-am: install-man
+install-data-am: install-dist_docDATA install-man
 
 install-dvi: install-dvi-am
 
@@ -750,8 +774,8 @@
 
 ps-am:
 
-uninstall-am: uninstall-dist_binSCRIPTS uninstall-libLTLIBRARIES \
-       uninstall-man
+uninstall-am: uninstall-dist_binSCRIPTS uninstall-dist_docDATA \
+       uninstall-libLTLIBRARIES uninstall-man
 
 uninstall-man: uninstall-man1
 
@@ -762,16 +786,17 @@
        ctags ctags-am distclean distclean-compile distclean-generic \
        distclean-libtool distclean-tags distdir dvi dvi-am html \
        html-am info info-am install install-am install-data \
-       install-data-am install-dist_binSCRIPTS install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am \
+       install-data-am install-dist_binSCRIPTS install-dist_docDATA \
+       install-dvi install-dvi-am install-exec install-exec-am \
+       install-html install-html-am install-info install-info-am \
        install-libLTLIBRARIES install-man install-man1 install-pdf \
        install-pdf-am install-ps install-ps-am install-strip \
        installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-compile \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
        tags tags-am uninstall uninstall-am uninstall-dist_binSCRIPTS \
-       uninstall-libLTLIBRARIES uninstall-man uninstall-man1
+       uninstall-dist_docDATA uninstall-libLTLIBRARIES uninstall-man \
+       uninstall-man1
 
 .PRECIOUS: Makefile
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/src/sys_generic.h 
new/pcsc-lite-1.9.8/src/sys_generic.h
--- old/pcsc-lite-1.9.7/src/sys_generic.h       2020-08-05 13:01:32.000000000 
+0200
+++ new/pcsc-lite-1.9.8/src/sys_generic.h       2022-05-22 13:16:32.000000000 
+0200
@@ -45,7 +45,7 @@
 
        int SYS_USleep(int);
 
-       int SYS_RandomInt(int, int);
+       int SYS_RandomInt(void);
 
        void SYS_InitRandom(void);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/src/sys_unix.c 
new/pcsc-lite-1.9.8/src/sys_unix.c
--- old/pcsc-lite-1.9.7/src/sys_unix.c  2020-08-05 13:01:32.000000000 +0200
+++ new/pcsc-lite-1.9.8/src/sys_unix.c  2022-05-22 13:20:44.000000000 +0200
@@ -39,11 +39,18 @@
 
 #include "config.h"
 #include <sys/time.h>
+#include <limits.h>
 #include <stdlib.h>
 #include <time.h>
+#ifdef HAVE_GETRANDOM
+#include <sys/random.h>
+#endif /* HAVE_GETRANDOM */
+#include <errno.h>
+#include <string.h>
 
 #include "misc.h"
 #include "sys_generic.h"
+#include "PCSC/debuglog.h"
 
 /**
  * @brief Makes the current process sleep for some seconds.
@@ -87,22 +94,40 @@
 /**
  * Generate a pseudo random number
  *
- * @param[in] fStart minimal value
- * @param[in] fEnd maximal value or -1 for a full range
+ * @return a non-negative random number
  *
- * @return a random number between fStart and fEnd
+ * @remark the range is at least up to `2^31`.
+ * @remark this is a CSPRNG when `getrandom()` is available, LCG otherwise.
+ * @warning SYS_InitRandom() should be called (once) before using this 
function.
+ * @warning not thread safe when system lacks `getrandom()` syscall.
+ * @warning not cryptographically secure when system lacks `getrandom()` 
syscall.
+ * @warning if interrupted by a signal, this function may return 0.
  */
-INTERNAL int SYS_RandomInt(int fStart, int fEnd)
+INTERNAL int SYS_RandomInt(void)
 {
-       int iRandNum = 0;
+#ifdef HAVE_GETRANDOM
+       unsigned int ui = 0;
+       unsigned char c[sizeof ui] = {0};
+       size_t i;
+       ssize_t ret;
 
-       if (-1 == fEnd)
-               /* full int range */
-               iRandNum = rand();
-       else
-               iRandNum = ((rand()+0.0)/RAND_MAX * (fEnd - fStart)) + fStart;
-
-       return iRandNum;
+       ret = getrandom(c, sizeof c, 0);
+       if (-1 == ret)
+       {
+               Log2(PCSC_LOG_ERROR, "getrandom() failed: %s", strerror(errno));
+               return lrand48();
+       }
+       // this loop avoids trap representations that may occur in the naive 
solution
+       for(i = 0; i < sizeof ui; i++) {
+               ui <<= CHAR_BIT;
+               ui |= c[i];
+       }
+       // the casts are for the sake of clarity
+       return (int)(ui & (unsigned int)INT_MAX);
+#else
+       int r = lrand48(); // this is not thread-safe
+       return r;
+#endif /* HAVE_GETRANDOM */
 }
 
 /**
@@ -110,6 +135,7 @@
  */
 INTERNAL void SYS_InitRandom(void)
 {
+#ifndef HAVE_GETRANDOM
        struct timeval tv;
        struct timezone tz;
        long myseed = 0;
@@ -124,6 +150,7 @@
                myseed = (long) time(NULL);
        }
 
-       srand(myseed);
+       srand48(myseed);
+#endif /* HAVE_GETRANDOM */
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/src/winscard.c 
new/pcsc-lite-1.9.8/src/winscard.c
--- old/pcsc-lite-1.9.7/src/winscard.c  2021-11-27 16:31:47.000000000 +0100
+++ new/pcsc-lite-1.9.8/src/winscard.c  2022-05-22 13:15:07.000000000 +0200
@@ -210,7 +210,7 @@
         * identified by clients and distinguished from others
         */
 
-       *phContext = SYS_RandomInt(0, -1);
+       *phContext = SYS_RandomInt();
 
        Log2(PCSC_LOG_DEBUG, "Establishing Context: 0x%lX", *phContext);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/src/winscard_clnt.c 
new/pcsc-lite-1.9.8/src/winscard_clnt.c
--- old/pcsc-lite-1.9.7/src/winscard_clnt.c     2022-04-03 15:51:10.000000000 
+0200
+++ new/pcsc-lite-1.9.8/src/winscard_clnt.c     2022-06-10 09:47:10.000000000 
+0200
@@ -498,6 +498,13 @@
        return rv;
 }
 
+#ifdef DESTRUCTOR
+DESTRUCTOR static void destructor(void)
+{
+       list_destroy(&contextMapList);
+}
+#endif
+
 /**
  * @brief Creates a communication context to the PC/SC Resource
  * Manager.
@@ -547,9 +554,8 @@
        {
                int lrv;
 
-               /* NOTE: The list will never be freed (No API call exists to
-                * "close all contexts".
-                * Applications which load and unload the library will leak
+               /* NOTE: The list will be freed only if DESTRUCTOR is defined.
+                * Applications which load and unload the library may leak
                 * the list's internal structures. */
                lrv = list_init(&contextMapList);
                if (lrv < 0)
@@ -2233,8 +2239,7 @@
                return SCARD_E_INVALID_HANDLE;
        }
 
-       if ((cbSendLength > MAX_BUFFER_SIZE_EXTENDED)
-               || (cbRecvLength > MAX_BUFFER_SIZE_EXTENDED))
+       if (cbSendLength > MAX_BUFFER_SIZE_EXTENDED)
        {
                rv = SCARD_E_INSUFFICIENT_BUFFER;
                goto end;
@@ -2689,8 +2694,7 @@
                return SCARD_E_INVALID_HANDLE;
        }
 
-       if ((cbSendLength > MAX_BUFFER_SIZE_EXTENDED)
-               || (*pcbRecvLength > MAX_BUFFER_SIZE_EXTENDED))
+       if (cbSendLength > MAX_BUFFER_SIZE_EXTENDED)
        {
                rv = SCARD_E_INSUFFICIENT_BUFFER;
                goto end;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-lite-1.9.7/src/winscard_svc.c 
new/pcsc-lite-1.9.8/src/winscard_svc.c
--- old/pcsc-lite-1.9.7/src/winscard_svc.c      2022-05-12 21:48:51.000000000 
+0200
+++ new/pcsc-lite-1.9.8/src/winscard_svc.c      2022-06-10 09:47:10.000000000 
+0200
@@ -658,8 +658,7 @@
                                        goto exit;
 
                                /* avoids buffer overflow */
-                               if ((trStr.pcbRecvLength > sizeof(pbRecvBuffer))
-                                       || (trStr.cbSendLength > 
sizeof(pbSendBuffer)))
+                               if (trStr.cbSendLength > sizeof(pbSendBuffer))
                                        goto buffer_overflow;
 
                                /* read sent buffer */
@@ -713,8 +712,7 @@
                                        goto exit;
 
                                /* avoids buffer overflow */
-                               if ((ctStr.cbRecvLength > sizeof(pbRecvBuffer))
-                                       || (ctStr.cbSendLength > 
sizeof(pbSendBuffer)))
+                               if (ctStr.cbSendLength > sizeof(pbSendBuffer))
                                {
                                        goto buffer_overflow;
                                }

Reply via email to