From: Jonathan Vollebregt Subject: [PATCH v3 1/8] reg.exe: Check key_name in wmain Message-Id: <1410019523-29897-1-git-send-email-jnvsor@gmail.com> Date: Sat, 6 Sep 2014 18:05:16 +0200 Moving the single slash, the error on remote, and the end trim to wmain means there are ~15 less places we have to check. Since key_name is used in all 3 operations it's a good place to put it. --- programs/reg/reg.c | 25 +++++++++++++------------ programs/reg/reg.rc | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/programs/reg/reg.c b/programs/reg/reg.c index d299cbf..1302e4a 100644 --- a/programs/reg/reg.c +++ b/programs/reg/reg.c @@ -173,12 +173,6 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, reg_printfW(stubW, key_name, value_name, value_empty, type, data, force); - if (key_name[0]=='\\' && key_name[1]=='\\') - { - reg_message(STRING_NO_REMOTE); - return 1; - } - p = strchrW(key_name,'\\'); if (!p) { @@ -246,12 +240,6 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty, ,0}; reg_printfW(stubW, key_name, value_name, value_empty, value_all, force); - if (key_name[0]=='\\' && key_name[1]=='\\') - { - reg_message(STRING_NO_REMOTE); - return 1; - } - p = strchrW(key_name,'\\'); if (!p) { @@ -390,6 +378,19 @@ int wmain(int argc, WCHAR *argvW[]) return 0; } + if (argvW[2][0] == '\\') + argvW[2]++; + + if (argvW[2][0] == '\\') + { + reg_message(STRING_NO_REMOTE); + return 1; + } + + i = strlenW(argvW[2]) - 1; + while (i >= 0 && argvW[2][i] == '\\') + argvW[2][i--] = 0; + if (!lstrcmpiW(argvW[1], addW)) { WCHAR *key_name, *value_name = NULL, *type = NULL, separator = '\0', *data = NULL; diff --git a/programs/reg/reg.rc b/programs/reg/reg.rc index 479912b..6f4c0c8 100644 --- a/programs/reg/reg.rc +++ b/programs/reg/reg.rc @@ -33,6 +33,6 @@ STRINGTABLE STRING_SUCCESS, "The operation completed successfully\n" STRING_INVALID_KEY, "Error: Invalid key name\n" STRING_INVALID_CMDLINE, "Error: Invalid command line parameters\n" - STRING_NO_REMOTE, "Error: Unable to add keys to remote machine\n" + STRING_NO_REMOTE, "Error: Unable to access remote machine\n" STRING_CANNOT_FIND, "Error: The system was unable to find the specified registry key or value\n" } -- 2.1.0