Verbesserte Fehlerbehandlung für DeviceScanner-Initialisierung [PATCH]

Micha Lenk <[email protected]> Thu, 16 Apr 2009 14:57:05 +0200
Newsgroups gmane.comp.lib.libchipcard.devel
Message-ID <[email protected]>
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--===============2213791610739475880==
Content-Type: multipart/signed; micalg=pgp-sha1;
	protocol="application/pgp-signature";
	boundary="------------enig31D0FF9F5A4B2B4FE846E79C"

This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig31D0FF9F5A4B2B4FE846E79C
Content-Type: multipart/mixed; boundary="------------000709020507040107060507"

This is a multi-part message in MIME format.
--------------000709020507040107060507
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: quoted-printable

Hallo Martin,

wenn der HAL-Daemon nicht l=E4uft, kommt es beim Starten und Beenden des
chipcardd4 Daemons zu komischen Fehlermeldungen (vgl. Debian Bug
http://bugs.debian.org/524320), die daher r=FChren, dass der Fall, dass
die *Scanner_new()-Funktionen auch NULL zur=FCck liefern k=F6nnen, nicht
abgefangen wird. Der angeh=E4ngte Patch (applizierbar auf SVN-Trunk mit
"patch -p1 < datei") behebt das Problem (und ist im Debian-Paket
libchipcard 4.2.7-2 enthalten).

Sch=F6ne Gr=FC=DFe
  Micha

--------------000709020507040107060507
Content-Type: text/plain; name="40_scanner_init_improved_error_handling.dpatch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline;
	filename="40_scanner_init_improved_error_handling.dpatch"

#! /bin/sh /usr/share/dpatch/dpatch-run
## 40_scanner_init_improved_error_handling.dpatch by Micha Lenk <micha@le=
nk.info>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Fix error handling for device scanners failing to initialize
## DP: Fix for Debian Bug #524320

@DPATCH@

--- a/src/lib/server/server/devicemanager/devicemanager.c	(Revision 520)
+++ b/src/lib/server/server/devicemanager/devicemanager.c	(Arbeitskopie)
@@ -248,32 +248,42 @@
 #ifdef USE_HAL
     DBG_INFO(0, "Adding HAL scanner");
     scanner=3DLC_HalScanner_new();
-    LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
-    scanners++;
+    if (scanner) {
+      LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
+      scanners++;
+    }
 #else
     if (dm->disablePciScan=3D=3D0) {
       DBG_INFO(0, "Adding PCI bus scanner");
       scanner=3DLC_PciScanner_new();
-      LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
-      scanners++;
+      if (scanner) {
+        LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
+        scanners++;
+      }
     }
     if (dm->disablePcmciaScan=3D=3D0) {
       DBG_INFO(0, "Adding PCMCIA bus scanner");
       scanner=3DLC_PcmciaScanner_new();
-      LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
-      scanners++;
+      if (scanner) {
+        LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
+        scanners++;
+      }
     }
     if (dm->disableUsbRawScan=3D=3D0) {
       DBG_INFO(0, "Adding USB bus scanner");
       scanner=3DLC_UsbRawScanner_new();
-      LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
-      scanners++;
+      if (scanner) {
+        LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
+        scanners++;
+      }
     }
     if (dm->disableUsbTtyScan=3D=3D0) {
       DBG_INFO(0, "Adding USB TTY bus scanner");
       scanner=3DLC_UsbTtyScanner_new();
-      LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
-      scanners++;
+      if (scanner) {
+        LC_DevMonitor_AddScanner(dm->deviceMonitor, scanner);
+        scanners++;
+      }
     }
 #endif
     dm->lastHardwareScan=3D0;
--- a/src/lib/server/common/halscanner.c	(Revision 520)
+++ b/src/lib/server/common/halscanner.c	(Arbeitskopie)
@@ -83,7 +83,10 @@
   DBG_INFO(0, "Closing HAL scanner");
=20
   dbus_error_free(&(xsc->dbus_error));
-  dbus_connection_unref(xsc->dbus_conn);
+  if (xsc->dbus_conn) {
+    dbus_connection_unref(xsc->dbus_conn);
+    xsc->dbus_conn =3D NULL;
+  }
   /*libhal_ctx_shutdown(ctx, NULL);*/
   libhal_ctx_free(xsc->ctx);
=20

--------------000709020507040107060507--

--------------enig31D0FF9F5A4B2B4FE846E79C
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAknnKycACgkQWN0/4pnhQbSaXgCgzqX7hjH8NS6pAoDiNavieSqi
8aIAn3hsFFL5pXbNG4rPjuNMvETvOSB8
=DBrM
-----END PGP SIGNATURE-----

--------------enig31D0FF9F5A4B2B4FE846E79C--


--===============2213791610739475880==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and 
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today. 
Use priority code J9JMT32. http://p.sf.net/sfu/p
--===============2213791610739475880==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Libchipcard-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libchipcard-devel

--===============2213791610739475880==--