Skip to content

Commit

Permalink
dinitctl: Error on empty arguments
Browse files Browse the repository at this point in the history
An empty argument means that something should be there but it's not there for some
reason (for example an empty shell variable is used). dinitctl should exit on empty
argument.

Signed-off-by: Mobin Aydinfar <[email protected]>
  • Loading branch information
mobin-2008 committed Sep 14, 2024
1 parent 1788c5e commit 7b51e1e
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions src/dinitctl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ int dinitctl_main(int argc, char **argv)
}
else if (strcmp(argv[i], "--socket-path") == 0 || strcmp(argv[i], "-p") == 0) {
++i;
if (i == argc) {
if (i == argc || argv[i][0] == '\0') {
cerr << "dinitctl: --socket-path/-p should be followed by socket path" << std::endl;
return 1;
}
Expand All @@ -165,7 +165,7 @@ int dinitctl_main(int argc, char **argv)
else if (strcmp(argv[i], "--from") == 0) {
if (command == ctl_cmd::ENABLE_SERVICE || command == ctl_cmd::DISABLE_SERVICE) {
++i;
if (i == argc) {
if (i == argc || argv[i][0] == '\0') {
cerr << "dinitctl: --from should be followed by a service name" << std::endl;
return 1;
}
Expand Down Expand Up @@ -204,7 +204,7 @@ int dinitctl_main(int argc, char **argv)
}
}
else if (strcmp(argv[i], "--services-dir") == 0 || strcmp(argv[i], "-d") == 0) {
if (++i < argc) {
if (++i < argc && argv[i][0] != '\0') {
service_dir_opts.set_specified_service_dir(argv[i]);
}
else {
Expand Down Expand Up @@ -294,6 +294,10 @@ int dinitctl_main(int argc, char **argv)
}
else {
// service name / other non-option
if (argv[i][0] == '\0') {
cerr << "dinitctl: Invalid empty argument\n";
return 1;
}
if (command == ctl_cmd::ADD_DEPENDENCY || command == ctl_cmd::RM_DEPENDENCY) {
if (! dep_type_set) {
if (strcmp(argv[i], "need") == 0 || strcmp(argv[i], "regular") == 0) {
Expand Down

0 comments on commit 7b51e1e

Please sign in to comment.