[Pkg-cups-devel] Bug#545298: cups-driverd detects a loop on /usr/share/ppd/1-local-admin and stops searching for PPDs

Tanguy Ortolo tanguy+debian at ortolo.eu
Sun Sep 6 10:53:11 UTC 2009


Package: cups
Version: 1.4.0-4
Severity: important
Tags: patch

Hello,

After upgrading to CUPS 1.4, I found that it did not see any of
OpenPrinting.org's PPD, installed on /usr/share/ppd/postscript/. Here is what
happens on the log:
    D [06/Sep/2009:12:22:21 +0200] [cups-driverd] Loading "/usr/local/share/ppd"...
    D [06/Sep/2009:12:22:21 +0200] [cups-driverd] Loading "/usr/share/ppd"...
    D [06/Sep/2009:12:22:21 +0200] [cups-driverd] Loading "/usr/share/ppd/ghostscript"...
    D [06/Sep/2009:12:22:21 +0200] [cups-driverd] Loading "/usr/share/ppd/ghostscript/model"...
    D [06/Sep/2009:12:22:21 +0200] [cups-driverd] Loading "/usr/share/ppd/custom"...
    E [06/Sep/2009:12:22:21 +0200] [cups-driverd] Skipping "/usr/share/ppd/1-local-admin": loop detected!
And cups-driverd stops here, skipping remaining directories such as
/usr/share/ppd/postscript/.

The fact that cups-driverd detects a loop on /usr/share/ppd/1-local-admin is
not normal, but the most important problem is that this error makes it ignore
other directories. Reading the source code, I found what cups-driverd's
load_ppds() did:
1. called on a directory, loop for each file it contains (l. 1447);
2. ignore hidden files;
3. for directories (l. 1467), recursively call load_ppds() on them:
   3.1. if the recursive call failed (l. 1477), terminate the function, even if
        there remains directories to browse!

So here is a trivial patch to make cups-driverd ignore failing directories
instead of stopping its browsing: removing the l. 1477's return(). I will also
try to find why it considers /usr/share/ppd/1-local-admin as a looping
directory.

Regards,

-- 
Tanguy Ortolo

-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.30-1-686 (SMP w/1 CPU core)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages cups depends on:
ii  adduser                3.110             add and remove users and groups
ii  bc                     1.06.94-3.1       The GNU bc arbitrary precision cal
ii  cups-client            1.3.11-1+b1       Common UNIX Printing System(tm) - 
ii  cups-common            1.3.11-1          Common UNIX Printing System(tm) - 
ii  debconf [debconf-2.0]  1.5.27            Debian configuration management sy
ii  ghostscript            8.70~dfsg-2       The GPL Ghostscript PostScript/PDF
ii  libavahi-client3       0.6.25-1          Avahi client library
ii  libavahi-common3       0.6.25-1          Avahi common library
ii  libc6                  2.9-25            GNU C Library: Shared libraries
ii  libcups2               1.4.0-4           Common UNIX Printing System(tm) - 
ii  libcupscgi1            1.4.0-4           Common UNIX Printing System(tm) - 
ii  libcupsdriver1         1.4.0-4           Common UNIX Printing System(tm) - 
ii  libcupsimage2          1.3.11-1+b1       Common UNIX Printing System(tm) - 
ii  libcupsmime1           1.4.0-4           Common UNIX Printing System(tm) - 
ii  libcupsppdc1           1.4.0-4           Common UNIX Printing System(tm) - 
ii  libdbus-1-3            1.2.16-2          simple interprocess messaging syst
ii  libgcc1                1:4.4.1-1         GCC support library
ii  libgnutls26            2.8.3-2           the GNU TLS library - runtime libr
ii  libgssapi-krb5-2       1.7dfsg~beta3-1   MIT Kerberos runtime libraries - k
ii  libijs-0.35            0.35-7            IJS raster image transport protoco
ii  libkrb5-3              1.7dfsg~beta3-1   MIT Kerberos runtime libraries
ii  libldap-2.4-2          2.4.17-1          OpenLDAP libraries
ii  libpam0g               1.0.1-10          Pluggable Authentication Modules l
ii  libpaper1              1.1.23+nmu1       library for handling paper charact
ii  libpoppler4            0.10.6-1          PDF rendering library
ii  libslp1                1.2.1-7.6         OpenSLP libraries
ii  libstdc++6             4.4.1-1           The GNU Standard C++ Library v3
ii  libusb-0.1-4           2:0.1.12-13       userspace USB programming library
ii  lsb-base               3.2-23            Linux Standard Base 3.2 init scrip
ii  perl-modules           5.10.0-25         Core Perl modules
ii  poppler-utils [xpdf-ut 0.10.6-1          PDF utilitites (based on libpopple
ii  procps                 1:3.2.8-1         /proc file system utilities
ii  ssl-cert               1.0.23            simple debconf wrapper for OpenSSL
ii  ttf-freefont           20080323-3        Freefont Serif, Sans and Mono True
ii  zlib1g                 1:1.2.3.3.dfsg-15 compression library - runtime

Versions of packages cups recommends:
pn  cups-driver-gutenprint    <none>         (no description available)
ii  foomatic-filters          4.0-20090509-1 OpenPrinting printer support - fil
ii  ghostscript-cups          8.70~dfsg-2    The GPL Ghostscript PostScript/PDF

Versions of packages cups suggests:
ii  cups-bsd                  1.3.11-1+b1    Common UNIX Printing System(tm) - 
pn  cups-pdf                  <none>         (no description available)
ii  cups-ppdc                 1.4.0-4        Common UNIX Printing System(tm) - 
ii  foomatic-db               20090616-1     OpenPrinting printer support - dat
ii  foomatic-db-engine        4.0-20090509-2 OpenPrinting printer support - pro
pn  hplip                     <none>         (no description available)
pn  smbclient                 <none>         (no description available)
pn  xpdf-korean | xpdf-japane <none>         (no description available)

-- debconf information:
  cupsys/raw-print: true
  cupsys/backend: ipp, lpd, parallel, socket, usb
-------------- next part --------------
--- cups-driverd.cxx.orig	2009-09-06 12:35:20.000000000 +0200
+++ cups-driverd.cxx	2009-09-06 12:35:39.000000000 +0200
@@ -1474,7 +1474,6 @@
 	if (!load_ppds(filename, name, 1))
 	{
 	  cupsDirClose(dir);
-	  return (1);
 	}
 
       continue;


More information about the Pkg-cups-devel mailing list