aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Allen <screwtape@froup.com>2016-05-21 17:31:37 +1000
committerMarc André Tanner <mat@brain-dump.org>2016-05-22 00:03:30 +0200
commit2931a5e39278ce8819c9cc17da66561a1ffbfd17 (patch)
tree46a4cac49e41f347bd2a8f772af21b49b484eb0f
parent0e80beefc335f3559460508afaf61a16d973da94 (diff)
downloadvis-2931a5e39278ce8819c9cc17da66561a1ffbfd17.tar.gz
vis-2931a5e39278ce8819c9cc17da66561a1ffbfd17.tar.xz
vis-menu: do not segfault if an option lacks an argument
-rw-r--r--vis-menu.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/vis-menu.c b/vis-menu.c
index c13bb94..4082f17 100644
--- a/vis-menu.c
+++ b/vis-menu.c
@@ -594,10 +594,22 @@ main(int argc, char **argv) {
else if(!strcmp(argv[i], "-b"))
barpos=-1;
/* double flags */
- else if(!strcmp(argv[i], "-p"))
- prompt=argv[++i];
- else if(!strcmp(argv[i], "-l"))
- lines = atoi(argv[++i]);
+ else if(!strcmp(argv[i], "-p")) {
+ if(argc > i+1)
+ prompt=argv[++i];
+ else {
+ fprintf(stderr, "Must provide a prompt\n");
+ exit(EXIT_FAILURE);
+ }
+ }
+ else if(!strcmp(argv[i], "-l")) {
+ if(argc > i+1)
+ lines = atoi(argv[++i]);
+ else {
+ fprintf(stderr, "Must provide a line count\n");
+ exit(EXIT_FAILURE);
+ }
+ }
else {
strncpy(text, argv[i], sizeof(text)-1);
cursor = strlen(text);