#include "client.h"
#include "hash.h"
#include "ircd.h"
+#include "ircd_alloc.h"
#include "ircd_features.h"
#include "ircd_log.h"
#include "ircd_reply.h"
#include "s_misc.h"
#include "send.h"
-#include <assert.h>
+/* #include <assert.h> -- Now using assert in ircd_log.h */
#include <stdlib.h>
#include <string.h>
int oper_password_match(const char* to_match, const char* passwd)
{
+ char *crypted;
+ int res;
/*
* use first two chars of the password they send in as salt
*
/* we no longer do a CRYPT_OPER_PASSWORD check because a clear
text passwords just handled by a fallback mechanism called
crypt_clear if it's enabled -- hikari */
- to_match = ircd_crypt(to_match, passwd);
+ crypted = ircd_crypt(to_match, passwd);
- if (to_match == NULL)
+ if (!crypted)
return 0;
- else
- return (0 == strcmp(to_match, passwd));
+ res = strcmp(crypted, passwd);
+ MyFree(crypted);
+ return 0 == res;
}
/*
if (EmptyString(name) || EmptyString(password))
return need_more_params(sptr, "OPER");
- aconf = find_conf_exact(name, cli_username(sptr), cli_sockhost(sptr), CONF_OPERATOR);
- if (!aconf)
- aconf = find_conf_exact(name, cli_username(sptr),
- ircd_ntoa(&cli_ip(cptr)), CONF_OPERATOR);
-
+ aconf = find_conf_exact(name, sptr, CONF_OPERATOR);
if (!aconf || IsIllegal(aconf))
{
send_reply(sptr, ERR_NOOPERHOST);