]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
negotiate_sspi_auth: Respond with ERR when FormatMessage() fails (#2158) v7
authorJoshua Rogers <MegaManSec@users.noreply.github.com>
Sun, 2 Nov 2025 19:56:35 +0000 (19:56 +0000)
committerAmos Jeffries <yadij@users.noreply.github.com>
Mon, 3 Nov 2025 03:24:31 +0000 (16:24 +1300)
src/auth/negotiate/SSPI/negotiate_sspi_auth.cc

index 137ffce3474b621c223adc4de82069df3aca4399..8d5924d93b519374fdacaf0bbc924ad0ee9e0f9a 100644 (file)
@@ -233,14 +233,18 @@ manage_request()
         c = (char *) SSP_ValidateNegotiateCredentials(decoded, decodedLen, &Done, &status, cred);
 
         if (status == SSP_ERROR) {
-            FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
-                          FORMAT_MESSAGE_IGNORE_INSERTS,
-                          nullptr,
-                          GetLastError(),
-                          MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),    /* Default language */
-                          (LPTSTR) & ErrorMessage,
-                          0,
-                          nullptr);
+            const auto n = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
+                                         FORMAT_MESSAGE_IGNORE_INSERTS,
+                                         nullptr,
+                                         GetLastError(),
+                                         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),    /* Default language */
+                                         (LPTSTR) & ErrorMessage,
+                                         0,
+                                         nullptr);
+            if (!n) {
+                SEND2("NA * Windows error: %s", GetLastError());
+                return 1;
+            }
             if (ErrorMessage[strlen(ErrorMessage) - 1] == '\n')
                 ErrorMessage[strlen(ErrorMessage) - 1] = '\0';
             if (ErrorMessage[strlen(ErrorMessage) - 1] == '\r')