Check user name for illegal characters when it is changed from within the user list.
authorEric Kohl <eric.kohl@reactos.org>
Sat, 17 May 2008 22:33:04 +0000 (22:33 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sat, 17 May 2008 22:33:04 +0000 (22:33 +0000)
svn path=/trunk/; revision=33565

reactos/dll/cpl/usrmgr/users.c

index f0ebcf0..15083cf 100644 (file)
@@ -58,15 +58,20 @@ CheckPasswords(HWND hwndDlg,
 \r
 static BOOL\r
 CheckUserName(HWND hwndDlg,\r
-              INT nIdDlgItem)\r
+              INT nIdDlgItem,\r
+              LPTSTR lpUserName)\r
 {\r
     TCHAR szUserName[256];\r
     UINT uLen;\r
 \r
-    uLen = GetDlgItemText(hwndDlg, nIdDlgItem, szUserName, 256);\r
+    if (lpUserName)\r
+        uLen = _tcslen(lpUserName);\r
+    else\r
+        uLen = GetDlgItemText(hwndDlg, nIdDlgItem, szUserName, 256);\r
 \r
     /* Check the user name */\r
-    if (uLen > 0 && _tcspbrk(szUserName, TEXT("\"*+,/\\:;<=>?[]|")) != NULL)\r
+    if (uLen > 0 &&\r
+        _tcspbrk((lpUserName) ? lpUserName : szUserName, TEXT("\"*+,/\\:;<=>?[]|")) != NULL)\r
     {\r
         MessageBox(hwndDlg,\r
                    TEXT("The user name you entered is invalid! A user name must not contain the following charecters: *+,/:;<=>?[\\]|"),\r
@@ -199,7 +204,7 @@ NewUserDlgProc(HWND hwndDlg,
                     break;\r
 \r
                 case IDOK:\r
-                    if (!CheckUserName(hwndDlg, IDC_USER_NEW_NAME))\r
+                    if (!CheckUserName(hwndDlg, IDC_USER_NEW_NAME, NULL))\r
                     {\r
                         SetFocus(GetDlgItem(hwndDlg, IDC_USER_NEW_NAME));\r
                         SendDlgItemMessage(hwndDlg, IDC_USER_NEW_NAME, EM_SETSEL, 0, -1);\r
@@ -333,6 +338,24 @@ UserNew(HWND hwndDlg)
 }\r
 \r
 \r
+static VOID\r
+UserRename(HWND hwndDlg)\r
+{\r
+    HWND hwndLV;\r
+    INT nItem;\r
+\r
+    hwndLV = GetDlgItem(hwndDlg, IDC_USERS_LIST);\r
+    if (hwndLV == NULL)\r
+        return;\r
+\r
+    nItem = ListView_GetNextItem(hwndLV, -1, LVNI_SELECTED);\r
+    if (nItem != -1)\r
+    {\r
+        (void)ListView_EditLabel(hwndLV, nItem);\r
+    }\r
+}\r
+\r
+\r
 static BOOL\r
 UserDelete(HWND hwndDlg)\r
 {\r
@@ -530,6 +553,9 @@ OnEndLabelEdit(LPNMLVDISPINFO pnmv)
     if (lstrcmp(szOldUserName, szNewUserName) == 0)\r
         return FALSE;\r
 \r
+    /* Check the user name for illegal characters */\r
+    if (!CheckUserName(NULL, 0, szNewUserName))\r
+        return FALSE;\r
 \r
     /* Change the user name */\r
     useri0.usri0_name = szNewUserName;\r
@@ -633,17 +659,7 @@ UsersPageProc(HWND hwndDlg,
                     break;\r
 \r
                 case IDM_USER_RENAME:\r
-                    {\r
-                        INT nItem;\r
-                        HWND hwndLV;\r
-\r
-                        hwndLV = GetDlgItem(hwndDlg, IDC_USERS_LIST);\r
-                        nItem = ListView_GetNextItem(hwndLV, -1, LVNI_SELECTED);\r
-                        if (nItem != -1)\r
-                        {\r
-                            (void)ListView_EditLabel(hwndLV, nItem);\r
-                        }\r
-                    }\r
+                    UserRename(hwndDlg);\r
                     break;\r
 \r
                 case IDM_USER_NEW:\r