Author: glen                         Date: Mon Jan 10 20:59:22 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- disable pcscd autostart, we have it as daemon and never had it suid-installed 
(fc patch)

---- Files affected:
packages/pcsc-lite:
   pcsc-lite.spec (1.48 -> 1.49) , noautostart.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/pcsc-lite/pcsc-lite.spec
diff -u packages/pcsc-lite/pcsc-lite.spec:1.48 
packages/pcsc-lite/pcsc-lite.spec:1.49
--- packages/pcsc-lite/pcsc-lite.spec:1.48      Wed Jan  5 22:46:49 2011
+++ packages/pcsc-lite/pcsc-lite.spec   Mon Jan 10 21:59:17 2011
@@ -7,7 +7,7 @@
 Summary(pl.UTF-8):     Środowisko PCSC dla Linuksa
 Name:          pcsc-lite
 Version:       1.6.4
-Release:       2
+Release:       3
 License:       BSD
 Group:         Daemons
 #Source0Download: http://alioth.debian.org/project/showfiles.php?group_id=30105
@@ -17,6 +17,7 @@
 Source2:       %{name}-pcscd.sysconfig
 Patch0:                %{name}-fhs.patch
 Patch1:                %{name}-any.patch
+Patch2:                noautostart.patch
 URL:           http://www.linuxnet.com/middle.html
 BuildRequires: autoconf >= 2.58
 BuildRequires: automake >= 1:1.8
@@ -92,6 +93,7 @@
 %setup -q
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 
 %build
 %{__libtoolize}
@@ -119,10 +121,10 @@
 %{__make} install \
        DESTDIR=$RPM_BUILD_ROOT
 
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/pcscd
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/pcscd
+install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/pcscd
+cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/pcscd
 
-install doc/example/*.c $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+cp -a doc/example/*.c $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
 
 rm -rf $RPM_BUILD_ROOT%{_prefix}/doc
 
@@ -185,6 +187,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.49  2011/01/10 20:59:17  glen
+- disable pcscd autostart, we have it as daemon and never had it 
suid-installed (fc patch)
+
 Revision 1.48  2011/01/05 21:46:49  glen
 - release 2
 

================================================================
Index: packages/pcsc-lite/noautostart.patch
diff -u /dev/null packages/pcsc-lite/noautostart.patch:1.1
--- /dev/null   Mon Jan 10 21:59:22 2011
+++ packages/pcsc-lite/noautostart.patch        Mon Jan 10 21:59:17 2011
@@ -0,0 +1,102 @@
+# Disable pcscd on-demand startup (#653903)
+https://bugzilla.redhat.com/show_bug.cgi?id=653903
+
+diff -up pcsc-lite-1.6.4/src/winscard_clnt.c.noautostart 
pcsc-lite-1.6.4/src/winscard_clnt.c
+--- pcsc-lite-1.6.4/src/winscard_clnt.c.noautostart    2010-12-12 
23:46:43.228293593 +0200
++++ pcsc-lite-1.6.4/src/winscard_clnt.c        2010-12-12 23:52:44.388532774 
+0200
+@@ -387,79 +387,15 @@ LONG SCardEstablishContext(DWORD dwScope
+       LPCVOID pvReserved2, LPSCARDCONTEXT phContext)
+ {
+       LONG rv;
+-      int daemon_launched = FALSE;
+-      int retries = 0;
+ 
+       PROFILE_START
+ 
+-again:
+       /* Check if the server is running */
+       rv = SCardCheckDaemonAvailability();
+       if (SCARD_E_INVALID_HANDLE == rv)
+               /* we reconnected to a daemon or we got called from a forked 
child */
+               rv = SCardCheckDaemonAvailability();
+ 
+-      if (SCARD_E_NO_SERVICE == rv)
+-      {
+-launch:
+-              if (daemon_launched)
+-              {
+-                      retries++;
+-                      if (retries < 50)       /* 50 x 100ms = 5 seconds */
+-                      {
+-                              /* give some more time to the server to start */
+-                              SYS_USleep(100*1000);   /* 100 ms */
+-                              goto again;
+-                      }
+-
+-                      /* the server failed to start (in time) */
+-                      goto end;
+-              }
+-              else
+-              {
+-                      int pid;
+-
+-                      pid = fork();
+-
+-                      if (pid < 0)
+-                      {
+-                              Log2(PCSC_LOG_CRITICAL, "fork failed: %s", 
strerror(errno));
+-                              rv = SCARD_F_INTERNAL_ERROR;
+-                              goto end;
+-                      }
+-
+-                      if (0 == pid)
+-                      {
+-                              int ret, i, max;
+-                              char *param = getenv("PCSCLITE_PCSCD_ARGS");
+-
+-                              /* close all file handles except stdin, stdout 
and
+-                               * stderr so that pcscd does not confiscate 
ressources
+-                               * allocated by the application */
+-                              max = sysconf(_SC_OPEN_MAX);
+-                              if (-1 == max)
+-                                      max = 1024;
+-                              for (i=3; i<max; i++)
+-                                      (void)close(i);
+-
+-                              /* son process */
+-                              ret = execl(PCSCD_BINARY, "pcscd", 
"--auto-exit", param,
+-                                      (char *)NULL);
+-                              Log2(PCSC_LOG_CRITICAL, "exec " PCSCD_BINARY " 
failed: %s",
+-                                      strerror(errno));
+-                              exit(1);
+-                      }
+-
+-                      /* father process */
+-                      daemon_launched = TRUE;
+-
+-                      if (waitpid(pid, NULL, 0) < 0)
+-                              Log2(PCSC_LOG_CRITICAL, "waitpid failed: %s", 
strerror(errno));
+-
+-                      goto again;
+-              }
+-      }
+-
+       if (rv != SCARD_S_SUCCESS)
+               goto end;
+ 
+@@ -468,15 +404,6 @@ launch:
+               pvReserved2, phContext);
+       (void)SCardUnlockThread();
+ 
+-      /* SCardEstablishContextTH may fail if the previous pcscd crashed
+-       * without cleaning /var/run/pcscd/pcscd.comm */
+-      if (SCARD_E_NO_SERVICE == rv)
+-      {
+-              retries++;
+-              if (retries <= 1)
+-                      goto launch;
+-      }
+-
+ end:
+       PROFILE_END(rv)
+ 
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/pcsc-lite/pcsc-lite.spec?r1=1.48&r2=1.49&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to