diff --git a/pkgs/misc/beep/cve-2018-0492.patch b/pkgs/misc/beep/cve-2018-0492.patch deleted file mode 100644 index 533fc6c1557..00000000000 --- a/pkgs/misc/beep/cve-2018-0492.patch +++ /dev/null @@ -1,106 +0,0 @@ -diff --git a/beep.c b/beep.c -index 7da2e70..4323d31 100644 ---- a/beep.c -+++ b/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/pkgs/misc/beep/default.nix b/pkgs/misc/beep/default.nix index 762b8d65a84..ce097bd5f23 100644 --- a/pkgs/misc/beep/default.nix +++ b/pkgs/misc/beep/default.nix @@ -1,33 +1,25 @@ -{ stdenv, fetchFromGitHub }: +{ stdenv, fetchurl }: # this package is working only as root # in order to work as a non privileged user you would need to suid the bin stdenv.mkDerivation { name = "beep-1.3"; - - src = fetchFromGitHub { - owner = "johnath"; - repo = "beep"; - rev = "0d790fa45777896749a885c3b93b2c1476d59f20"; - sha256 = "0dxz58an0sz5r82al5sc935y2z2k60rz12ikjvx7sz39rfirgfpc"; + src = fetchurl { + url = http://www.johnath.com/beep/beep-1.3.tar.gz; + sha256 = "0bgch6jq5cahakk3kbr9549iysf2dik09afixxy5brbxk1xfzb2r"; }; - patches = [ ./cve-2018-0492.patch ]; - - makeFlags = [ - "INSTALL_DIR=${placeholder "out"}/bin/" - "MAN_DIR=${placeholder "out"}/man/man1/" - ]; + makeFlags = "INSTALL_DIR=\${out}/bin/ MAN_DIR=\${out}/man/man1/"; preInstall = '' - mkdir -p $out/{bin,man/man1} + mkdir -p $out/bin + mkdir -p $out/man/man1 ''; - - meta = with stdenv.lib; { + meta = { description = "The advanced PC speaker beeper"; homepage = http://www.johnath.com/beep/; - license = licenses.gpl2; - platforms = platforms.linux; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; }; }