David Bremner committed some fixes.
[nssm.git] / gui.cpp
diff --git a/gui.cpp b/gui.cpp
index f47be58..79000a1 100644 (file)
--- a/gui.cpp
+++ b/gui.cpp
@@ -1,6 +1,6 @@
 #include "nssm.h"\r
 \r
-static enum { NSSM_TAB_APPLICATION, NSSM_TAB_DETAILS, NSSM_TAB_LOGON, NSSM_TAB_DEPENDENCIES, NSSM_TAB_PROCESS, NSSM_TAB_SHUTDOWN, NSSM_TAB_EXIT, NSSM_TAB_IO, NSSM_TAB_ROTATION, NSSM_TAB_ENVIRONMENT, NSSM_TAB_HOOKS, NSSM_NUM_TABS };\r
+static enum { NSSM_TAB_APPLICATION, NSSM_TAB_DETAILS, NSSM_TAB_LOGON, NSSM_TAB_DEPENDENCIES, NSSM_TAB_PROCESS, NSSM_TAB_SHUTDOWN, NSSM_TAB_EXIT, NSSM_TAB_IO, NSSM_TAB_ROTATION, NSSM_TAB_ENVIRONMENT, NSSM_TAB_HOOKS, NSSM_NUM_TABS } nssm_tabs;\r
 static HWND tablist[NSSM_NUM_TABS];\r
 static const TCHAR *hook_event_strings[] = { NSSM_HOOK_EVENT_START, NSSM_HOOK_EVENT_STOP, NSSM_HOOK_EVENT_EXIT, NSSM_HOOK_EVENT_POWER, NSSM_HOOK_EVENT_ROTATE, NULL };\r
 static const TCHAR *hook_action_strings[] = { NSSM_HOOK_ACTION_PRE, NSSM_HOOK_ACTION_POST, NSSM_HOOK_ACTION_CHANGE, NSSM_HOOK_ACTION_RESUME, NULL };\r
@@ -450,7 +450,7 @@ int configure(HWND window, nssm_service_t *service, nssm_service_t *orig_service
     service->username = 0;\r
     service->usernamelen = 0;\r
     if (service->password) {\r
-      SecureZeroMemory(service->password, service->passwordlen);\r
+      SecureZeroMemory(service->password, service->passwordlen * sizeof(TCHAR));\r
       HeapFree(GetProcessHeap(), 0, service->password);\r
     }\r
     service->password = 0;\r
@@ -539,7 +539,7 @@ int configure(HWND window, nssm_service_t *service, nssm_service_t *orig_service
         /* Get first password. */\r
         if (! GetDlgItemText(tablist[NSSM_TAB_LOGON], IDC_PASSWORD1, service->password, (int) service->passwordlen)) {\r
           HeapFree(GetProcessHeap(), 0, password);\r
-          SecureZeroMemory(service->password, service->passwordlen);\r
+          SecureZeroMemory(service->password, service->passwordlen * sizeof(TCHAR));\r
           HeapFree(GetProcessHeap(), 0, service->password);\r
           service->password = 0;\r
           service->passwordlen = 0;\r
@@ -552,9 +552,9 @@ int configure(HWND window, nssm_service_t *service, nssm_service_t *orig_service
 \r
         /* Get confirmation. */\r
         if (! GetDlgItemText(tablist[NSSM_TAB_LOGON], IDC_PASSWORD2, password, (int) service->passwordlen)) {\r
-          SecureZeroMemory(password, service->passwordlen);\r
+          SecureZeroMemory(password, service->passwordlen * sizeof(TCHAR));\r
           HeapFree(GetProcessHeap(), 0, password);\r
-          SecureZeroMemory(service->password, service->passwordlen);\r
+          SecureZeroMemory(service->password, service->passwordlen * sizeof(TCHAR));\r
           HeapFree(GetProcessHeap(), 0, service->password);\r
           service->password = 0;\r
           service->passwordlen = 0;\r
@@ -568,9 +568,9 @@ int configure(HWND window, nssm_service_t *service, nssm_service_t *orig_service
         /* Compare. */\r
         if (_tcsncmp(password, service->password, service->passwordlen)) {\r
           popup_message(window, MB_OK | MB_ICONEXCLAMATION, NSSM_GUI_MISSING_PASSWORD);\r
-          SecureZeroMemory(password, service->passwordlen);\r
+          SecureZeroMemory(password, service->passwordlen * sizeof(TCHAR));\r
           HeapFree(GetProcessHeap(), 0, password);\r
-          SecureZeroMemory(service->password, service->passwordlen);\r
+          SecureZeroMemory(service->password, service->passwordlen * sizeof(TCHAR));\r
           HeapFree(GetProcessHeap(), 0, service->password);\r
           service->password = 0;\r
           service->passwordlen = 0;\r
@@ -808,8 +808,8 @@ int remove(HWND window) {
 \r
     case 3:\r
       popup_message(window, MB_OK | MB_ICONEXCLAMATION, NSSM_GUI_SERVICE_NOT_INSTALLED);\r
-      return 3;\r
       cleanup_nssm_service(service);\r
+      return 3;\r
 \r
     case 4:\r
       popup_message(window, MB_OK | MB_ICONEXCLAMATION, NSSM_GUI_REMOVE_SERVICE_FAILED);\r