diff options
Diffstat (limited to 'app-misc/beep')
-rw-r--r-- | app-misc/beep/Manifest | 5 | ||||
-rw-r--r-- | app-misc/beep/beep-1.3-r3.ebuild | 37 | ||||
-rw-r--r-- | app-misc/beep/files/beep-1.3-CVE-2018-0492.patch | 106 | ||||
-rw-r--r-- | app-misc/beep/files/beep-1.3-Makefile.patch | 26 | ||||
-rw-r--r-- | app-misc/beep/metadata.xml | 8 |
5 files changed, 182 insertions, 0 deletions
diff --git a/app-misc/beep/Manifest b/app-misc/beep/Manifest new file mode 100644 index 000000000000..c70d0923038c --- /dev/null +++ b/app-misc/beep/Manifest @@ -0,0 +1,5 @@ +AUX beep-1.3-CVE-2018-0492.patch 3292 BLAKE2B fafed7dbe65438869adccf674b19c4e5b6655dca794043bbb9914879fc8e9bb6eac67b35254f47ec61a9ad5147aac6b819edb3fc8633e81c79d555023a422147 SHA512 e7ba3db3e70d2560c2a8701d9424db43a2e94988728b84bc84c5e6d777fc1e0596d767470fca41774a104cba9d2e58ef59f6449570c3d3887c1bf97861bc5bad +AUX beep-1.3-Makefile.patch 516 BLAKE2B f69b5907e7a1342a574bedc273e609415e5853939aa694894c732333e482f2507462748cfb9ba1f0945f4778653d44c3fa04c4aca3eb78afb7152597beba759a SHA512 b21f788780a13bbef436b80ec020b8727b9c1a8ddac3552cb8bf05d7ab937851d05d72279b53b51dd0ae1f99e44f55caa494b7e61b59800d91dd186497b65009 +DIST beep-1.3.tar.gz 19344 BLAKE2B 4f9cf12f6983eeb53502fd85e5e1d428e1c1af481f8f424f6ae18cbe104462e8fdcc96670a72daa8a8a0d1430d00824d8795b4db53437e7bb7320cddfd84cfd3 SHA512 3f71146202208fa0c0cda360d125dd972ea003cf8cd62da21d67eb544c92f7b82640e7ce7c3835cbc65c75909a882edfa54dbd8d8b748d6f243711ea331477fd +EBUILD beep-1.3-r3.ebuild 680 BLAKE2B d9b7f48c566189b8eb6c35cc3bbc39824bd539d74b2f95072b4dbe5d28e5361bcc7d08d4575fdb6b0f9e3fd301186c84b251accd236b9f004a206f0a30ae8f11 SHA512 2069f3daff4130277d6b1062040aeda4c494e1425ba55eaf85ffb130859971cccc56bf1dd99239cbbe30f17870acd80777723eb1e90a67be8d6863f347d94dad +MISC metadata.xml 271 BLAKE2B 46146f4bf13e9f4d33435225ec1012dd9bb89b20812963dc50368cab2a60a3c542052cb72f8963cc72074b2c13a5b054c77152de1d108027752601a349bc4ef8 SHA512 3e98f5382cf789992bdfc0f32e6e36eba31944be654c03f2ed9bd00baf56c8b768c256c4f8778d5775d6df38da4afcf8e32b6e6495a1ecfc8e7982c7c8943b1b diff --git a/app-misc/beep/beep-1.3-r3.ebuild b/app-misc/beep/beep-1.3-r3.ebuild new file mode 100644 index 000000000000..a6c0024d4f55 --- /dev/null +++ b/app-misc/beep/beep-1.3-r3.ebuild @@ -0,0 +1,37 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit toolchain-funcs + +DESCRIPTION="The advanced PC speaker beeper" +HOMEPAGE="http://www.johnath.com/beep" +SRC_URI="http://www.johnath.com/beep/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="alpha amd64 arm ppc ppc64 sparc x86" +IUSE="suid" + +PATCHES=( + "${FILESDIR}/${P}-Makefile.patch" + "${FILESDIR}/${P}-CVE-2018-0492.patch" +) + +pkg_setup() { + tc-export CC +} + +src_install() { + dobin beep + if use suid; then + fowners :audio /usr/bin/beep + fperms 4710 /usr/bin/beep + else + fperms 0711 /usr/bin/beep + fi + unpack "./${PN}.1.gz" + doman "${PN}.1" + einstalldocs +} diff --git a/app-misc/beep/files/beep-1.3-CVE-2018-0492.patch b/app-misc/beep/files/beep-1.3-CVE-2018-0492.patch new file mode 100644 index 000000000000..f4894b51fc81 --- /dev/null +++ b/app-misc/beep/files/beep-1.3-CVE-2018-0492.patch @@ -0,0 +1,106 @@ +diff --git a/beep.c b/beep.c +index 7da2e70..4323d31 100644 +--- beep.c ++++ beep.c +@@ -109,6 +109,7 @@ void do_beep(int freq) { + /* BEEP_TYPE_EVDEV */ + struct input_event e; + ++ memset(&e, 0, sizeof(e)); + e.type = EV_SND; + e.code = SND_TONE; + e.value = freq; +@@ -124,10 +125,6 @@ void do_beep(int freq) { + /* If we get interrupted, it would be nice to not leave the speaker beeping in + perpetuity. */ + void handle_signal(int signum) { +- +- if(console_device) +- free(console_device); +- + switch(signum) { + case SIGINT: + case SIGTERM: +@@ -257,7 +254,7 @@ void parse_command_line(int argc, char **argv, beep_parms_t *result) { + result->verbose = 1; + break; + case 'e' : /* also --device */ +- console_device = strdup(optarg); ++ console_device = optarg; + break; + case 'h' : /* notice that this is also --help */ + default : +@@ -276,26 +273,6 @@ void play_beep(beep_parms_t parms) { + "%d delay after) @ %.2f Hz\n", + parms.reps, parms.length, parms.delay, parms.end_delay, parms.freq); + +- /* try to snag the console */ +- if(console_device) +- console_fd = open(console_device, O_WRONLY); +- else +- if((console_fd = open("/dev/tty0", O_WRONLY)) == -1) +- console_fd = open("/dev/vc/0", O_WRONLY); +- +- if(console_fd == -1) { +- fprintf(stderr, "Could not open %s for writing\n", +- console_device != NULL ? console_device : "/dev/tty0 or /dev/vc/0"); +- printf("\a"); /* Output the only beep we can, in an effort to fall back on usefulness */ +- perror("open"); +- exit(1); +- } +- +- if (ioctl(console_fd, EVIOCGSND(0)) != -1) +- console_type = BEEP_TYPE_EVDEV; +- else +- console_type = BEEP_TYPE_CONSOLE; +- + /* Beep */ + for (i = 0; i < parms.reps; i++) { /* start beep */ + do_beep(parms.freq); +@@ -305,8 +282,6 @@ void play_beep(beep_parms_t parms) { + if(parms.end_delay || (i+1 < parms.reps)) + usleep(1000*parms.delay); /* wait... */ + } /* repeat. */ +- +- close(console_fd); + } + + +@@ -328,6 +303,26 @@ int main(int argc, char **argv) { + signal(SIGTERM, handle_signal); + parse_command_line(argc, argv, parms); + ++ /* try to snag the console */ ++ if(console_device) ++ console_fd = open(console_device, O_WRONLY); ++ else ++ if((console_fd = open("/dev/tty0", O_WRONLY)) == -1) ++ console_fd = open("/dev/vc/0", O_WRONLY); ++ ++ if(console_fd == -1) { ++ fprintf(stderr, "Could not open %s for writing\n", ++ console_device != NULL ? console_device : "/dev/tty0 or /dev/vc/0"); ++ printf("\a"); /* Output the only beep we can, in an effort to fall back on usefulness */ ++ perror("open"); ++ exit(1); ++ } ++ ++ if (ioctl(console_fd, EVIOCGSND(0)) != -1) ++ console_type = BEEP_TYPE_EVDEV; ++ else ++ console_type = BEEP_TYPE_CONSOLE; ++ + /* this outermost while loop handles the possibility that -n/--new has been + used, i.e. that we have multiple beeps specified. Each iteration will + play, then free() one parms instance. */ +@@ -365,8 +360,8 @@ int main(int argc, char **argv) { + parms = next; + } + +- if(console_device) +- free(console_device); ++ close(console_fd); ++ console_fd = -1; + + return EXIT_SUCCESS; + } diff --git a/app-misc/beep/files/beep-1.3-Makefile.patch b/app-misc/beep/files/beep-1.3-Makefile.patch new file mode 100644 index 000000000000..f4b891e8b824 --- /dev/null +++ b/app-misc/beep/files/beep-1.3-Makefile.patch @@ -0,0 +1,26 @@ +--- a/Makefile 2002-03-29 09:37:22.000000000 -0800 ++++ b/Makefile 2009-03-27 22:19:18.000000000 -0700 +@@ -1,17 +1,18 @@ +-CC=gcc +-FLAGS=-Wall ++CC ?= gcc ++LDFLAGS ?= ++CFLAGS ?= -Wall + EXEC_NAME=beep + INSTALL_DIR=/usr/bin + MAN_FILE=beep.1.gz +-MAN_DIR=/usr/man/man1 ++MAN_DIR=/usr/share/man/man1 + + default : beep + + clean : +- rm ${EXEC_NAME} ++ rm -f ${EXEC_NAME} + + beep : beep.c +- ${CC} ${FLAGS} -o ${EXEC_NAME} beep.c ++ ${CC} ${CFLAGS} ${LDFLAGS} -o ${EXEC_NAME} beep.c + + install : + cp ${EXEC_NAME} ${INSTALL_DIR} diff --git a/app-misc/beep/metadata.xml b/app-misc/beep/metadata.xml new file mode 100644 index 000000000000..3e927f8d7480 --- /dev/null +++ b/app-misc/beep/metadata.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>shell-tools@gentoo.org</email> + <name>Gentoo Shell Tools Project</name> + </maintainer> +</pkgmetadata> |