~alpine/devel

main/cups: fix typo, lpd backend v1 PROPOSED

Isaac Dunham: 1
 main/cups: fix typo, lpd backend

 3 files changed, 54 insertions(+), 5 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.alpinelinux.org/~alpine/devel/patches/503/mbox | git am -3
Learn more about email & git

[alpine-devel] [PATCH] main/cups: fix typo, lpd backend Export this patch

'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.
---
 main/cups/APKBUILD                       | 12 ++++++---
 main/cups/cups-check-sockaddr-size.patch | 45 ++++++++++++++++++++++++++++++++
 main/cups/cups.pre-install               |  2 +-
 3 files changed, 54 insertions(+), 5 deletions(-)
 create mode 100644 main/cups/cups-check-sockaddr-size.patch

diff --git a/main/cups/APKBUILD b/main/cups/APKBUILD
index f625c3e..9f2352a 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 0000000..ce966dc
--- /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 f6b88cb..468163c 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
-- 
2.0.1



---
Unsubscribe:  alpine-devel+unsubscribe@lists.alpinelinux.org
Help:         alpine-devel+help@lists.alpinelinux.org
---