diff options
Diffstat (limited to 'server-tools/instance-manager/user_map.cc')
-rw-r--r-- | server-tools/instance-manager/user_map.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/server-tools/instance-manager/user_map.cc b/server-tools/instance-manager/user_map.cc index 7cb2cd67d7f..df86d6a6915 100644 --- a/server-tools/instance-manager/user_map.cc +++ b/server-tools/instance-manager/user_map.cc @@ -36,7 +36,8 @@ struct User int User::init(const char *line) { - const char *name_begin, *name_end, *password; + const char *name_begin, *name_end; + char *password; if (line[0] == '\'' || line[0] == '"') { @@ -44,7 +45,7 @@ int User::init(const char *line) name_end= strchr(name_begin, line[0]); if (name_end == 0 || name_end[1] != ':') goto err; - password= name_end + 2; + password= (char*)(name_end + 2); } else { @@ -52,13 +53,18 @@ int User::init(const char *line) name_end= strchr(name_begin, ':'); if (name_end == 0) goto err; - password= name_end + 1; + password= (char*)(name_end + 1); } user_length= name_end - name_begin; if (user_length > USERNAME_LENGTH) goto err; /* assume that newline characater is present */ + if (password[strlen(password)-2] == '\r') + { + password[strlen(password)-2]= '\n'; + password[strlen(password)-1]= 0; + } if (strlen(password) != SCRAMBLED_PASSWORD_CHAR_LENGTH + 1) goto err; |