return 0; // FIXME: error message
if (argc < 1)
return err_needmoreparams(client, command), sendbuf(client), 0;
- if (!(client->umode & UMODE_SECURE)) {
- memset(args[0], 0, strlen(args[0]));
- return err_passwdmismatch(client), sendbuf(client), 0;
- }
if (client->pass_reg) {
memset(client->pass_reg, 0, strlen(client->pass_reg));
free(client->pass_reg);
}
client->pass_reg = mystrdup(args[0]);
+ memset(args[0], 0, strlen(args[0]));
if (!client->pass_reg) abort();
} else if(strcmp(command, "OPER") == 0) {
if (!is_registered(client))
memset(client->pass_reg, 0, strlen(client->pass_reg));
free(client->pass_reg);
client->pass_reg = NULL;
- if (res == -1) {
+ if (!(client->umode & UMODE_SECURE) || res == -1) {
return err_passwdmismatch(client), sendbuf(client);
} else {
client->umode |= UMODE_REGISTERED;