[srvx-commits] CVS: services/src nickserv.c,1.258,1.259
Brought to you by:
entrope
|
From: Entrope <en...@us...> - 2003-09-26 15:28:21
|
Update of /cvsroot/srvx/services/src
In directory sc8-pr-cvs1:/tmp/cvs-serv3906/src
Modified Files:
nickserv.c
Log Message:
formatting changes to make profiling more accurate
do not free() keys in nickserv_allow_auth_dict
(avoids double free hazard due to a missing strdup())
Index: nickserv.c
===================================================================
RCS file: /cvsroot/srvx/services/src/nickserv.c,v
retrieving revision 1.258
retrieving revision 1.259
diff -C2 -r1.258 -r1.259
*** nickserv.c 9 Sep 2003 16:40:29 -0000 1.258
--- nickserv.c 26 Sep 2003 15:28:17 -0000 1.259
***************
*** 534,553 ****
oper_has_access(struct userNode *user, struct userNode *bot, unsigned int min_level, unsigned int quiet) {
if (!user->handle_info) {
! if (!quiet) send_message(user, bot, MSG_AUTHENTICATE);
return 0;
}
if (!IsOper(user) && (!IsHelping(user) || min_level)) {
! if (!quiet) send_message(user, bot, NSMSG_NO_ACCESS);
return 0;
}
if (HANDLE_FLAGGED(user->handle_info, OPER_SUSPENDED)) {
! if (!quiet) send_message(user, bot, MSG_OPER_SUSPENDED);
return 0;
}
if (user->handle_info->opserv_level < min_level) {
! if (!quiet) send_message(user, bot, NSMSG_NO_ACCESS);
return 0;
}
--- 534,557 ----
oper_has_access(struct userNode *user, struct userNode *bot, unsigned int min_level, unsigned int quiet) {
if (!user->handle_info) {
! if (!quiet)
! send_message(user, bot, MSG_AUTHENTICATE);
return 0;
}
if (!IsOper(user) && (!IsHelping(user) || min_level)) {
! if (!quiet)
! send_message(user, bot, NSMSG_NO_ACCESS);
return 0;
}
if (HANDLE_FLAGGED(user->handle_info, OPER_SUSPENDED)) {
! if (!quiet)
! send_message(user, bot, MSG_OPER_SUSPENDED);
return 0;
}
if (user->handle_info->opserv_level < min_level) {
! if (!quiet)
! send_message(user, bot, NSMSG_NO_ACCESS);
return 0;
}
***************
*** 564,568 ****
/* cant register a juped nick/service nick as handle, to prevent confusion */
user = GetUserH(handle);
! if (user && IsLocal(user)) return 0;
/* test either regex or containing all valid chars */
if (nickserv_conf.valid_handle_regex_set) {
--- 568,573 ----
/* cant register a juped nick/service nick as handle, to prevent confusion */
user = GetUserH(handle);
! if (user && IsLocal(user))
! return 0;
/* test either regex or containing all valid chars */
if (nickserv_conf.valid_handle_regex_set) {
***************
*** 584,591 ****
struct userNode *user;
/* first, check that the nick is acceptible by the server */
! if (!is_valid_nick(nick)) return 0;
/* cant register a juped nick/service nick.. client could kill it. */
user = GetUserH(nick);
! if (user && IsLocal(user)) return 0;
/* test either regex or as valid handle */
if (nickserv_conf.valid_nick_regex_set) {
--- 589,598 ----
struct userNode *user;
/* first, check that the nick is acceptible by the server */
! if (!is_valid_nick(nick))
! return 0;
/* cant register a juped nick/service nick.. client could kill it. */
user = GetUserH(nick);
! if (user && IsLocal(user))
! return 0;
/* test either regex or as valid handle */
if (nickserv_conf.valid_nick_regex_set) {
***************
*** 656,660 ****
int
oper_outranks(struct userNode *user, struct handle_info *hi) {
! if (user->handle_info->opserv_level > hi->opserv_level) return 1;
if (user->handle_info->opserv_level == hi->opserv_level) {
if ((user->handle_info->opserv_level == 1000)
--- 663,668 ----
int
oper_outranks(struct userNode *user, struct handle_info *hi) {
! if (user->handle_info->opserv_level > hi->opserv_level)
! return 1;
if (user->handle_info->opserv_level == hi->opserv_level) {
if ((user->handle_info->opserv_level == 1000)
***************
*** 710,734 ****
len = strlen(pass);
if (len < nickserv_conf.password_min_length) {
! if (user) nickserv_notice(user, NSMSG_PASSWORD_SHORT, nickserv_conf.password_min_length);
return 0;
}
if (!irccasecmp(pass, handle)) {
! if (user) nickserv_notice(user, NSMSG_PASSWORD_ACCOUNT);
return 0;
}
dict_find(nickserv_conf.weak_password_dict, pass, &i);
if (i) {
! if (user) nickserv_notice(user, NSMSG_PASSWORD_DICTIONARY);
return 0;
}
for (i=0; i<len; i++) {
! if (isdigit(pass[i])) cnt_digits++;
! if (isupper(pass[i])) cnt_upper++;
! if (islower(pass[i])) cnt_lower++;
}
if ((cnt_lower < nickserv_conf.password_min_lower)
|| (cnt_upper < nickserv_conf.password_min_upper)
|| (cnt_digits < nickserv_conf.password_min_digits)) {
! if (user) nickserv_notice(user, NSMSG_PASSWORD_READABLE, nickserv_conf.password_min_digits, nickserv_conf.password_min_upper, nickserv_conf.password_min_lower);
return 0;
}
--- 718,749 ----
len = strlen(pass);
if (len < nickserv_conf.password_min_length) {
! if (user)
! nickserv_notice(user, NSMSG_PASSWORD_SHORT, nickserv_conf.password_min_length);
return 0;
}
if (!irccasecmp(pass, handle)) {
! if (user)
! nickserv_notice(user, NSMSG_PASSWORD_ACCOUNT);
return 0;
}
dict_find(nickserv_conf.weak_password_dict, pass, &i);
if (i) {
! if (user)
! nickserv_notice(user, NSMSG_PASSWORD_DICTIONARY);
return 0;
}
for (i=0; i<len; i++) {
! if (isdigit(pass[i]))
! cnt_digits++;
! if (isupper(pass[i]))
! cnt_upper++;
! if (islower(pass[i]))
! cnt_lower++;
}
if ((cnt_lower < nickserv_conf.password_min_lower)
|| (cnt_upper < nickserv_conf.password_min_upper)
|| (cnt_digits < nickserv_conf.password_min_digits)) {
! if (user)
! nickserv_notice(user, NSMSG_PASSWORD_READABLE, nickserv_conf.password_min_digits, nickserv_conf.password_min_upper, nickserv_conf.password_min_lower);
return 0;
}
***************
*** 1556,1560 ****
return 0;
}
! dict_insert(nickserv_allow_auth_dict, strdup(target->nick), hi);
nickserv_notice(user, NSMSG_AUTH_ALLOWED, target->nick, hi->handle);
nickserv_notice(target, NSMSG_AUTH_ALLOWED_MSG, hi->handle, hi->handle);
--- 1571,1575 ----
return 0;
}
! dict_insert(nickserv_allow_auth_dict, target->nick, hi);
nickserv_notice(user, NSMSG_AUTH_ALLOWED, target->nick, hi->handle);
nickserv_notice(target, NSMSG_AUTH_ALLOWED_MSG, hi->handle, hi->handle);
***************
*** 3376,3385 ****
dict_delete(nickserv_id_dict);
dict_delete(nickserv_conf.weak_password_dict);
! if (auth_func_list) free(auth_func_list);
! if (unreg_func_list) free(unreg_func_list);
! if (rf_list) free(rf_list);
! if (allowauth_func_list) free(allowauth_func_list);
! if (handle_merge_func_list) free(handle_merge_func_list);
! if (failpw_func_list) free(failpw_func_list);
if (nickserv_conf.valid_handle_regex_set) regfree(&nickserv_conf.valid_handle_regex);
if (nickserv_conf.valid_nick_regex_set) regfree(&nickserv_conf.valid_nick_regex);
--- 3391,3400 ----
dict_delete(nickserv_id_dict);
dict_delete(nickserv_conf.weak_password_dict);
! free(auth_func_list);
! free(unreg_func_list);
! free(rf_list);
! free(allowauth_func_list);
! free(handle_merge_func_list);
! free(failpw_func_list);
if (nickserv_conf.valid_handle_regex_set) regfree(&nickserv_conf.valid_handle_regex);
if (nickserv_conf.valid_nick_regex_set) regfree(&nickserv_conf.valid_nick_regex);
***************
*** 3479,3483 ****
nickserv_allow_auth_dict = dict_new();
- dict_set_free_keys(nickserv_allow_auth_dict, free);
userList_init(&curr_helpers);
--- 3494,3497 ----
|