From 809c53287a5ed558617678d04b6a66a5bcd1a9fd Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 27 Jan 2025 07:36:09 -0800 Subject: [PATCH] Fix crash when driver fuzzer finds language-server. (#4847) The driver fuzzer, unlike the actual driver, provides a null `input_stream`, which caused the `language-server` subcommand to crash. --- toolchain/driver/driver_test.cpp | 5 +++++ toolchain/driver/language_server_subcommand.cpp | 1 + 2 files changed, 6 insertions(+) diff --git a/toolchain/driver/driver_test.cpp b/toolchain/driver/driver_test.cpp index 4fba9e5210ff..2fd62947ba36 100644 --- a/toolchain/driver/driver_test.cpp +++ b/toolchain/driver/driver_test.cpp @@ -228,5 +228,10 @@ TEST_F(DriverTest, FileOutput) { EXPECT_THAT(ReadFile("test.s"), ContainsRegex("Main:")); } +TEST_F(DriverTest, LanguageServerNoStdin) { + EXPECT_FALSE(driver_.RunCommand({"language-server"}).success); + EXPECT_THAT(test_error_stream_.TakeStr(), HasSubstr("requires input_stream")); +} + } // namespace } // namespace Carbon diff --git a/toolchain/driver/language_server_subcommand.cpp b/toolchain/driver/language_server_subcommand.cpp index 816a66184da9..a93eefc5a88f 100644 --- a/toolchain/driver/language_server_subcommand.cpp +++ b/toolchain/driver/language_server_subcommand.cpp @@ -22,6 +22,7 @@ auto LanguageServerSubcommand::Run(DriverEnv& driver_env) -> DriverResult { if (!driver_env.input_stream) { *driver_env.error_stream << "error: language-server requires input_stream\n"; + return {.success = false}; } auto err =