Index: usr.bin/posixshmcontrol/posixshmcontrol.1 =================================================================== --- usr.bin/posixshmcontrol/posixshmcontrol.1 +++ usr.bin/posixshmcontrol/posixshmcontrol.1 @@ -120,7 +120,7 @@ To show content of the shared memory segment with the path .Pa /1 , use the command -.Dl "posixshmcontrol dump /q | hexdump -C" +.Dl "posixshmcontrol dump /1 | hexdump -C" .It To create a segment with the path .Pa /2 Index: usr.bin/posixshmcontrol/posixshmcontrol.c =================================================================== --- usr.bin/posixshmcontrol/posixshmcontrol.c +++ usr.bin/posixshmcontrol/posixshmcontrol.c @@ -152,9 +152,14 @@ return (2); } } - argc -= optind; argv += optind; + + if (argc == 0) { + usage(); + return (2); + } + ret = 0; for (i = 0; i < argc; i++) { ret1 = create_one_shm(argv[i], mode, idx); @@ -184,6 +189,11 @@ { int i, ret, ret1; + if (argc == 1) { + usage(); + return (2); + } + ret = 0; for (i = 1; i < argc; i++) { ret1 = delete_one_shm(argv[i]); @@ -352,6 +362,11 @@ { int i, ret, ret1; + if (argc == 1) { + usage(); + return (2); + } + ret = 0; for (i = 1; i < argc; i++) { ret1 = read_one_shm(argv[i]); @@ -438,6 +453,11 @@ argc -= optind; argv += optind; + if (argc == 0) { + usage(); + return (2); + } + ret = 0; for (i = 0; i < argc; i++) { ret1 = stat_one_shm(argv[i], hsize, uname); @@ -478,16 +498,21 @@ switch (c) { case 's': if (expand_number(optarg, &newsize) == -1) - err(1, "size:"); + err(1, "size"); break; case '?': default: return (2); } } - argc -= optind; argv += optind; + + if (argc == 0) { + usage(); + return (2); + } + ret = 0; for (i = 0; i < argc; i++) { ret1 = truncate_one_shm(argv[i], newsize);