Package: libcupsys2
Version: 1.2.4-2+b1
Severity: important
Hello,
I have discovered a problem in the ppd cups API. The new API of cups ppd does
not correctly detect nickname and options of the printer.
I have tested on many ppds like
http://www.linuxprinting.org/foomatic-db/db/source/PPD/HP/mono_laser/hp_LaserJet_2300.ppd.
And it does not work.
I have tried to patch it but I have failed.
For the nickname, the problem is due to the function ppdOpen2(). This function
does not check the return code of the function cupsCharsetToUTF8(). In this
case,
this function returns -1.
I joined a program that reproduces the bug. Called with the previous ppd, the
program must print HP LaserJet 2300 Postscript (recommended) and he prints
nothing. This code worked perfectly with the version 1.1.23-12.
Thanks.
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.12-1-386
Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=ISO-8859-15)
Versions of packages libcupsys2 depends on:
ii libc62.3.6.ds1-4 GNU C Library: Shared libraries
ii libgnutls13 1.4.4-1 the GNU TLS library - runtime libr
ii zlib1g 1:1.2.3-13 compression library - runtime
libcupsys2 recommends no packages.
-- no debconf information
/* gcc -Wall test-cups.c -o test-cups -lcups */
#include cups/ppd.h
#include cups/cups.h
int main(int argc,char** argv){
ppd_file_t *ppd;
if(argc2){
fprintf(stderr, Usage: %s nom.ppd \n,argv[0]);
return 1;
}
if( (ppd = ppdOpenFile(argv[1])) == NULL){
printf(Failed to open: %s \n,argv[1]);
return 2;
}
printf(nickname: %s\n, ppd-nickname);
ppdClose(ppd);
return 0;
}