From 841f86dbc2e35166fd43341c8eb144680b0c7ece Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 11 Mar 2009 12:49:50 +0100 Subject: [PATCH] flockc: segfaults when file name is not given $ flock -s Segmentation fault ltrace: __libc_start_main(0x8048870, 2, 0xbfe9f404, 0x8049070, 0x8049060 getopt_long(2, 0xbfe9f404, "+sexnouw:hV?", 0x80494e0, 0xbfe9f354) = 115 getopt_long(2, 0xbfe9f404, "+sexnouw:hV?", 0x80494e0, 0xbfe9f354) = -1 strtol(0, 0xbfe9f34c, 10, 0x80494e0, 0xbfe9f354 --- SIGSEGV (Segmentation fault) --- +++ killed by SIGSEGV +++ Addresses-Red-Had-Bugzilla: #489672 Signed-off-by: Karel Zak --- sys-utils/flock.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sys-utils/flock.c b/sys-utils/flock.c index 029e4364..3386e15b 100644 --- a/sys-utils/flock.c +++ b/sys-utils/flock.c @@ -217,7 +217,7 @@ int main(int argc, char *argv[]) EX_NOINPUT); } - } else { + } else if (optind < argc) { /* Use provided file descriptor */ fd = (int)strtol(argv[optind], &eon, 10); @@ -226,8 +226,15 @@ int main(int argc, char *argv[]) exit(EX_USAGE); } + } else { + /* Bad options */ + + fprintf(stderr, "%s: requires file descriptor, file or directory\n", + program); + exit(EX_USAGE); } + if ( have_timeout ) { if ( timeout.it_value.tv_sec == 0 && timeout.it_value.tv_usec == 0 ) { -- 2.39.5