Till's patch to fix USB-Parallel adapter cable problem (bug #624564).

This commit is contained in:
Jiri Popelka 2011-02-01 16:31:48 +01:00
parent 04a43d9470
commit 52d3a41e09
2 changed files with 74 additions and 1 deletions

67
cups-usb-parallel.patch Normal file
View File

@ -0,0 +1,67 @@
diff -up cups-1.4.6/backend/ieee1284.c.usb-parallel cups-1.4.6/backend/ieee1284.c
--- cups-1.4.6/backend/ieee1284.c.usb-parallel 2010-04-10 00:42:09.000000000 +0200
+++ cups-1.4.6/backend/ieee1284.c 2011-02-01 16:13:44.000000000 +0100
@@ -55,7 +55,7 @@ backendGetDeviceID(
# if defined(__sun) && defined(ECPPIOC_GETDEVID)
struct ecpp_device_id did; /* Device ID buffer */
# endif /* __sun && ECPPIOC_GETDEVID */
-
+ char *c;
DEBUG_printf(("backendGetDeviceID(fd=%d, device_id=%p, device_id_size=%d, "
"make_model=%p, make_model_size=%d, scheme=\"%s\", "
@@ -176,7 +176,7 @@ backendGetDeviceID(
* and then limit the length to the size of our buffer...
*/
- if (length > device_id_size)
+ if ((length > device_id_size) || (length < 14))
length = (((unsigned)device_id[1] & 255) << 8) +
((unsigned)device_id[0] & 255);
@@ -214,11 +214,16 @@ backendGetDeviceID(
device_id[length] = '\0';
}
}
-# ifdef DEBUG
else
+ {
+# ifdef DEBUG
+
DEBUG_printf(("backendGetDeviceID: ioctl failed - %s\n",
strerror(errno)));
# endif /* DEBUG */
+ /* Clean up after failed attempt to get device ID */
+ *device_id = '\0';
+ }
# endif /* __linux */
# if defined(__sun) && defined(ECPPIOC_GETDEVID)
@@ -246,14 +251,24 @@ backendGetDeviceID(
# endif /* __sun && ECPPIOC_GETDEVID */
}
+ /*
+ * Check whether device ID is valid. Turn line breaks and tabs to spaces
+ * and abort device IDs with non-printable characters
+ */
+ for (c = device_id; *c; c++)
+ if (isspace(*c))
+ *c = ' ';
+ else if (!isprint(*c))
+ {
+ *device_id = '\0';
+ break;
+ }
+
DEBUG_printf(("backendGetDeviceID: device_id=\"%s\"\n", device_id));
if (scheme && uri)
*uri = '\0';
- if (!*device_id)
- return (-1);
-
/*
* Get the make and model...
*/

View File

@ -8,7 +8,7 @@
Summary: Common Unix Printing System
Name: cups
Version: 1.4.6
Release: 7%{?dist}
Release: 8%{?dist}
License: GPLv2
Group: System Environment/Daemons
Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2
@ -69,6 +69,7 @@ Patch39: cups-str3754.patch
Patch40: cups-avahi.patch
Patch41: cups-usb-buffer-size.patch
Patch42: cups-icc.patch
Patch43: cups-usb-parallel.patch
Patch100: cups-lspp.patch
@ -288,6 +289,8 @@ module.
%patch41 -p1 -b .usb-buffer-size
# ICC colord support.
%patch42 -p1 -b .icc
# Till's patch to fix USB-Parallel adapter cable problem (bug #624564).
%patch43 -p1 -b .usb-parallel
%if %lspp
# LSPP support.
@ -603,6 +606,9 @@ rm -rf $RPM_BUILD_ROOT
%{php_extdir}/phpcups.so
%changelog
* Tue Feb 01 2011 Jiri Popelka <jpopelka@redhat.com> 1:1.4.6-8
- Use Till's patch to fix USB-Parallel adapter cable problem (bug #624564).
* Tue Jan 25 2011 Tim Waugh <twaugh@redhat.com> 1:1.4.6-7
- Some fixes for the AvahiClient callback (bug #672143).