aboutsummaryrefslogtreecommitdiffstats
path: root/main/cups
diff options
context:
space:
mode:
authorIsaac Dunham <ibid.ag@gmail.com>2014-06-29 22:53:44 -0700
committerNatanael Copa <ncopa@alpinelinux.org>2014-07-01 14:19:27 +0000
commitbd662709fe2c8742823e1cea6cddcafd54a942d4 (patch)
tree25b7843f70e24ddc4cbf18ca0f92ad12f308b015 /main/cups
parent02bf3e3b6a1cbf88dd4cd4d3e679be90911f9896 (diff)
downloadaports-bd662709fe2c8742823e1cea6cddcafd54a942d4.tar.bz2
aports-bd662709fe2c8742823e1cea6cddcafd54a942d4.tar.xz
main/cups: fix typo, lpd backend
'ldadmin' for 'lpadmin' kept cups from starting. 'lpd' failed with errno=EINVAL on musl, thanks to passing bind a struct sockaddr{,_in,_in6,_un} with a reported size of 256. This resulted in lpd print support being unusable.
Diffstat (limited to 'main/cups')
-rw-r--r--main/cups/APKBUILD12
-rw-r--r--main/cups/cups-check-sockaddr-size.patch45
-rw-r--r--main/cups/cups.pre-install2
3 files changed, 54 insertions, 5 deletions
diff --git a/main/cups/APKBUILD b/main/cups/APKBUILD
index f625c3efac..9f2352a262 100644
--- a/main/cups/APKBUILD
+++ b/main/cups/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=cups
pkgver=1.7.3
-pkgrel=0
+pkgrel=1
pkgdesc="The CUPS Printing System"
url="http://www.cups.org/"
arch="all"
@@ -19,6 +19,7 @@ source="http://www.cups.org/software/$pkgver/cups-$pkgver-source.tar.bz2
$pkgname.logrotate
cupsd.initd
cups-no-export-ssllibs.patch
+ cups-check-sockaddr-size.patch
"
_builddir="$srcdir"/$pkgname-$pkgver
@@ -120,12 +121,15 @@ client() {
md5sums="d498c3020acda0904ab0c13b6389a1ec cups-1.7.3-source.tar.bz2
f861b18f4446c43918c8643dcbbd7f6d cups.logrotate
1154ed66fdcfa0523f929a369079f43c cupsd.initd
-3ba9e3410df1dc3015463d615ef91b3b cups-no-export-ssllibs.patch"
+3ba9e3410df1dc3015463d615ef91b3b cups-no-export-ssllibs.patch
+81391375d22df6808a1042a0fae85845 cups-check-sockaddr-size.patch"
sha256sums="fa989f856d1499169dc442fb2311053ea42fe455ca2721693ba5a9fe4b333e31 cups-1.7.3-source.tar.bz2
b3308353504bc1cc0d5203ad3609bc98639ad9655b52e8ec8257286877532796 cups.logrotate
3ea71f13cf925736847ca44aa0f1a9ed944fb3d303c34af923140b20fd587e2b cupsd.initd
-ff3eb0782af0405f5dafe89e04b1b4ea7a49afc5496860d724343bd04f375832 cups-no-export-ssllibs.patch"
+ff3eb0782af0405f5dafe89e04b1b4ea7a49afc5496860d724343bd04f375832 cups-no-export-ssllibs.patch
+32a06c70093f8ad52e35520048b68d544f13f5c8094f85bab53ff54c809012ef cups-check-sockaddr-size.patch"
sha512sums="78e5275682322a52c5e10d87c106059900595c4fd167924bece30d32b646c304ecc0f5051c53cb983b75d5a5ab76fd5b81931fb6f191b9e936f2528ca869798e cups-1.7.3-source.tar.bz2
162fe69ee46962f7ce07a9a2a75154682088895c4749c9bcfc54bb2aa861f48d7d1a8e3223f78a197319a3a405626ffe996615f6eb23168afcefabab343d5be0 cups.logrotate
3c5f4017cb1faf3e63551db53da4cb8305601adf65358bc53e982c5a0dfdd2b455a8ce735760ae3cc5ef81cdfa2a3cfe4be4107d1858d7ab9d91b4b97d3bc73b cupsd.initd
-7a8cd9ac33b0dd4627c72df4275db8ccd7cf8e201bce3833719b42f532f526bb347b842e3ea1ef0d61855b5c6e1088b5d20b68942f2c2c0acf504d8d9728efd3 cups-no-export-ssllibs.patch"
+7a8cd9ac33b0dd4627c72df4275db8ccd7cf8e201bce3833719b42f532f526bb347b842e3ea1ef0d61855b5c6e1088b5d20b68942f2c2c0acf504d8d9728efd3 cups-no-export-ssllibs.patch
+ef0d1d80bf78de8bc29821f675891409605515a89358615d56b76d534ee0935ac9cffa625ba8622f5351d0efc030dead11d885b1f125df2beb42e3afd377ff9a cups-check-sockaddr-size.patch"
diff --git a/main/cups/cups-check-sockaddr-size.patch b/main/cups/cups-check-sockaddr-size.patch
new file mode 100644
index 0000000000..ce966dc970
--- /dev/null
+++ b/main/cups/cups-check-sockaddr-size.patch
@@ -0,0 +1,45 @@
+diff --git a/backend/lpd.c b/backend/lpd.c
+index 6e4ab36..bbffb82 100644
+--- a/backend/lpd.c
++++ b/backend/lpd.c
+@@ -1244,6 +1244,7 @@ rresvport_af(int *port, /* IO - Port number to bind to */
+ {
+ http_addr_t addr; /* Socket address */
+ int fd; /* Socket file descriptor */
++ socklen_t socksz=sizeof(struct sockaddr); /* size of struct sockaddr* */
+
+
+ /*
+@@ -1260,6 +1261,23 @@ rresvport_af(int *port, /* IO - Port number to bind to */
+ memset(&addr, 0, sizeof(addr));
+ addr.addr.sa_family = family;
+
++ switch(family) {
++ case AF_INET:
++ socksz = sizeof(struct sockaddr_in);
++ break;
++#ifdef AF_INET6
++ case AF_INET6:
++ socksz = sizeof(struct sockaddr_in6);
++ break;
++#endif
++#ifdef AF_LOCAL
++ case AF_LOCAL:
++ socksz = sizeof(struct sockaddr_un);
++#endif
++ default:
++ break;
++ }
++
+ /*
+ * Try to bind the socket to a reserved port...
+ */
+@@ -1276,7 +1294,7 @@ rresvport_af(int *port, /* IO - Port number to bind to */
+ * Try binding the port to the socket; return if all is OK...
+ */
+
+- if (!bind(fd, (struct sockaddr *)&addr, sizeof(addr)))
++ if (!bind(fd, (struct sockaddr *)&addr, socksz))
+ return (fd);
+
+ /*
diff --git a/main/cups/cups.pre-install b/main/cups/cups.pre-install
index f6b88cbd2b..468163cfe3 100644
--- a/main/cups/cups.pre-install
+++ b/main/cups/cups.pre-install
@@ -1,6 +1,6 @@
#!/bin/sh
-addgroup -S ldadmin 2>/dev/null
+addgroup -S lpadmin 2>/dev/null
addgroup -S lp 2>/dev/null
adduser -S -G lp lp 2>/dev/null
addgroup lp lp 2>/dev/null