OSDN Git Service

Simplify code to wipe out the command-line args. MT
authorLoRd_MuldeR <mulder2@gmx.de>
Thu, 6 Apr 2023 20:35:35 +0000 (22:35 +0200)
committerLoRd_MuldeR <mulder2@gmx.de>
Thu, 6 Apr 2023 20:35:35 +0000 (22:35 +0200)
frontend/src/utils.c

index b9fa881..ac1fa6f 100644 (file)
 // ==========================================================================
 
 #ifdef _WIN32
-#ifdef _DLL
-#define _acmdln GetCommandLineA()
-#define _wcmdln GetCommandLineW()
-#else
-extern char    *const _acmdln;
-extern wchar_t *const _wcmdln;
-#endif
-static void clear_cmdline_args(char *const acmdln, wchar_t *const wcmdln)
-{
-       if (acmdln && acmdln[0U])
-       {
-               const size_t len = strlen(acmdln);
-               slunkcrypt_bzero(acmdln, len * sizeof(char));
-               if (len > 5U) strcpy(acmdln, "slunk");
-       }
-       if (wcmdln && wcmdln[0U])
-       {
-               const size_t len = wcslen(wcmdln);
-               slunkcrypt_bzero(wcmdln, len * sizeof(wchar_t));
-               if (len > 5U) wcscpy(wcmdln, L"slunk");
-       }
-}
+_CRTIMP char    **__cdecl __p__acmdln(void);
+_CRTIMP wchar_t **__cdecl __p__wcmdln(void);
+#define _acmdln (*__p__acmdln())
+#define _wcmdln (*__p__wcmdln())
 #endif
 
 void init_terminal(void)
@@ -82,7 +64,8 @@ void init_terminal(void)
        SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);
        _setmode(_fileno(stderr), _O_U8TEXT);
        _setmode(_fileno(stdin),  _O_BINARY);
-       clear_cmdline_args(_acmdln, _wcmdln);
+       slunkcrypt_bzero(_acmdln, strlen(_acmdln) * sizeof(char));
+       slunkcrypt_bzero(_wcmdln, wcslen(_wcmdln) * sizeof(wchar_t));
 #else
        openlog("slunkcrypt", LOG_PID | LOG_CONS, LOG_USER);
 #endif