diff options
author | Isaac Dunham <ibid.ag@gmail.com> | 2014-06-29 22:53:44 -0700 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2014-07-01 14:19:27 +0000 |
commit | bd662709fe2c8742823e1cea6cddcafd54a942d4 (patch) | |
tree | 25b7843f70e24ddc4cbf18ca0f92ad12f308b015 /main | |
parent | 02bf3e3b6a1cbf88dd4cd4d3e679be90911f9896 (diff) | |
download | aports-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')
-rw-r--r-- | main/cups/APKBUILD | 12 | ||||
-rw-r--r-- | main/cups/cups-check-sockaddr-size.patch | 45 | ||||
-rw-r--r-- | main/cups/cups.pre-install | 2 |
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 |