diff --git a/src/node_dotenv.cc b/src/node_dotenv.cc index a704f8a099d94d..8a552c2928087d 100644 --- a/src/node_dotenv.cc +++ b/src/node_dotenv.cc @@ -25,7 +25,7 @@ std::vector Dotenv::GetPathFromArgs( paths.push_back(arg.substr(11)); // Directly extract the path } else if (arg == "--env-file" && i + 1 < args.size()) { paths.push_back(args[++i]); // Advance to the next argument - } else if (arg[1] != '-') { + } else if (arg.length() == 2 && arg[1] != '-') { ++i; // Skip short argument values (like `-e <...>`) } } diff --git a/test/cctest/test_dotenv.cc b/test/cctest/test_dotenv.cc index bafbf171cc0d99..fb3c50e1a38582 100644 --- a/test/cctest/test_dotenv.cc +++ b/test/cctest/test_dotenv.cc @@ -12,7 +12,8 @@ using node::Dotenv; ASSERT_EQ(check_result.size(), expected.size()); \ for (size_t i = 0; i < check_result.size(); ++i) { \ EXPECT_EQ(check_result[i], expected[i]); \ - } + } \ + } TEST(Dotenv, GetPathFromArgs) { CHECK_DOTENV(({"node", "--env-file=.env"}), @@ -31,4 +32,10 @@ TEST(Dotenv, GetPathFromArgs) { CHECK_DOTENV(({"node", "-e", "...", "--env-file=after.env"}), (std::vector{"after.env"})); + + CHECK_DOTENV(({"node", "-too_long", "--env-file=.env"}), + (std::vector{".env"})); + + CHECK_DOTENV(({"node", "-", "--env-file=.env"}), + (std::vector{".env"})); }