sane: add patch to fix net autodiscover with non kodak scanners (via Arch); enable cups.

This commit is contained in:
Juan RP 2014-04-23 14:45:37 +02:00
parent d4e408adc6
commit 0606b3bbc8
2 changed files with 101 additions and 2 deletions

View File

@ -0,0 +1,98 @@
From 37523b867d411c2f82d08128246be7e38bc9812c Mon Sep 17 00:00:00 2001
From: Paul Newall <quandry@ntlworld.com>
Date: Mon, 14 Oct 2013 22:22:53 +0100
Subject: [PATCH] Bugfix in kodakaio.c to fix segfault when non kodak scanners
return unexpected data via avahi auto discovery
---
backend/kodakaio.c | 43 ++++++++++++++++++++++++++++++----------
doc/descriptions/kodakaio.desc | 2 +-
3 files changed, 37 insertions(+), 12 deletions(-)
diff --git a/backend/kodakaio.c b/backend/kodakaio.c
index 8c4583a..b442e50 100644
--- backend/kodakaio.c
+++ backend/kodakaio.c
@@ -127,7 +127,7 @@ for ubuntu 12.10
#define KODAKAIO_VERSION 02
#define KODAKAIO_REVISION 4
-#define KODAKAIO_BUILD 6
+#define KODAKAIO_BUILD 7
/* for usb (but also used for net though it's not required). */
#define MAX_BLOCK_SIZE 32768
@@ -2184,6 +2184,7 @@ static void resolve_callback(
AvahiLookupResultFlags flags,
AVAHI_GCC_UNUSED void* userdata) {
+ AvahiStringList *vid_pair_list = NULL, *pid_pair_list = NULL;
char *pidkey, *pidvalue;
char *vidkey, *vidvalue;
size_t valuesize;
@@ -2204,20 +2205,40 @@ static void resolve_callback(
avahi_address_snprint(a, sizeof(a), address);
/* Output short for Kodak ESP */
- DBG(min(10,DBG_AUTO), "%s:%u %s ", a,port,host_name);
- avahi_string_list_get_pair(avahi_string_list_find(txt, "vid"),
- &vidkey, &vidvalue, &valuesize);
- DBG(min(10,DBG_AUTO), "%s=%s ", vidkey, vidvalue);
- avahi_string_list_get_pair(avahi_string_list_find(txt, "pid"),
- &pidkey, &pidvalue, &valuesize);
- DBG(min(10,DBG_AUTO), "%s=%s\n", pidkey, pidvalue);
+ DBG(min(10,DBG_AUTO), "%s:%u %s\n", a,port,host_name);
+ vid_pair_list = avahi_string_list_find(txt, "vid");
+ if(vid_pair_list != NULL) {
+ avahi_string_list_get_pair(vid_pair_list, &vidkey, &vidvalue, &valuesize);
+ DBG(min(10,DBG_AUTO), "%s=%s ", vidkey, vidvalue);
+ }
+ else DBG(min(10,DBG_AUTO), "failed to find key vid\n");
+
+ pid_pair_list = avahi_string_list_find(txt, "pid");
+ if(pid_pair_list != NULL) {
+ avahi_string_list_get_pair(pid_pair_list, &pidkey, &pidvalue, &valuesize);
+ DBG(min(10,DBG_AUTO), "%s=%s\n", pidkey, pidvalue);
+ }
+ else DBG(min(10,DBG_AUTO), "failed to find key pid\n");
+
+ if(pid_pair_list != NULL && vid_pair_list != NULL) {
ProcessAvahiDevice(name, vidvalue, pidvalue, a);
- avahi_free(vidkey); avahi_free(vidvalue);
- avahi_free(pidkey); avahi_free(pidvalue);
+ }
+ else DBG(min(10,DBG_AUTO), "didn't call ProcessAvahiDevice\n");
+
+ if(vid_pair_list != NULL) {
+ avahi_free(vidkey);
+ avahi_free(vidvalue);
+ DBG(min(15,DBG_AUTO), "vidkey and vidvalue freed\n");
+ }
+ if(pid_pair_list != NULL) {
+ avahi_free(pidkey);
+ avahi_free(pidvalue);
+ DBG(min(15,DBG_AUTO), "pidkey and pidvalue freed\n");
+ }
}
}
-
+ DBG(min(10,DBG_AUTO), "ending resolve_callback\n");
avahi_service_resolver_free(r);
}
diff --git a/doc/descriptions/kodakaio.desc b/doc/descriptions/kodakaio.desc
index 7882513..5fb18ed 100644
--- doc/descriptions/kodakaio.desc
+++ doc/descriptions/kodakaio.desc
@@ -1,6 +1,6 @@
:backend "kodakaio"
:url "http://sourceforge.net/projects/cupsdriverkodak/"
-:version "2.4.6"
+:version "2.4.7"
:manpage "sane-kodakaio"
:comment "Backend for Kodak AiO ESP and Hero printers. Also possibly Advent AWL10"
:devicetype :scanner
--
1.7.10.4

View File

@ -1,14 +1,15 @@
# Template build file for 'sane'.
pkgname=sane
version=1.0.24
revision=1
revision=2
wrksrc="sane-backends-${version}"
build_style=gnu-configure
configure_args="--disable-locking --enable-avahi --disable-latex --enable-ipv6
--with-docdir=/usr/share/doc/sane --enable-libusb_1_0 --enable-pthread"
hostmakedepends="pkg-config"
makedepends="avahi-libs-devel libjpeg-turbo-devel tiff-devel libgphoto2-devel
v4l-utils-devel libusb-devel net-snmp-devel libieee1284-devel openssl-devel"
v4l-utils-devel libusb-devel net-snmp-devel libieee1284-devel openssl-devel
cups-devel"
depends="net-snmp"
systemd_services="saned.socket on"
conf_files="