Example #1
0
extern int account_match(t_account * account, char const * username)
{
    unsigned int namehash;
    char const * tname;

    if (!account)
    {
		eventlog(eventlog_level_error,"account_match","got NULL account");
		return -1;
    }
    if (!username)
    {
		eventlog(eventlog_level_error,"account_match","got NULL username");
		return -1;
    }

    if (username[0]=='#')
		eventlog(eventlog_level_error,"account_match","got old style account name !!!"); /* FIXME: core dump? :> XXXXXX */

    namehash = account_hash(username);
    if (account->namehash==namehash && (tname = account_get_name(account)))
    {
        if (strcasecmp(tname,username)==0)
        {
			account_unget_name(tname);
			return 1;
		}
		else
			account_unget_name(tname);
    }

    return 0;
}
Example #2
0
extern t_account * create_vaccount(const char *username, unsigned int uid)
{
    /* this is a modified(?) version of account_create */
    t_account * account;

    account = malloc(sizeof(t_account));
    if (!account)
    {
		eventlog(eventlog_level_error,"create_vaccount","could not allocate memory for account");
		return NULL;
    }
    account->attrs    = NULL;
    account->age      = 0;
    CLEAR_FLAGS(account);

    account->namehash = 0; /* hash it later */
    account->uid      = 0;

    account->filename = NULL;	/* there is no local account file */
    account->bits_state = account_state_unknown;

    if (username)
    {
		if (username[0]!='#') {
			if (strchr(username,' '))
			{
				eventlog(eventlog_level_error,"create_vaccount","username contains spaces");
				account_destroy(account);
				return NULL;
			}
			if (strlen(username)>=MAX_USER_NAME)
			{
				eventlog(eventlog_level_error,"create_vaccount","username \"%s\" is too long (%u chars)",username,strlen(username));
				account_destroy(account);
				return NULL;
			}
			account_set_strattr(account,"BNET\\acct\\username",username);
            account->namehash = account_hash(username);
		} else {
			if (str_to_uint(&username[1],&account->uid)<0) {
				eventlog(eventlog_level_warn,"create_vaccount","invalid username \"%s\"",username);
			}
		}
    }
    account_set_numattr(account,"BNET\\acct\\userid",account->uid);
    return account;
}
Example #3
0
File: account.c Project: 91D2/pvpgn
extern int account_match(t_account * account, char const * username)
{
    unsigned int userid=0;
    unsigned int namehash;
    char const * tname;
    
    if (!account)
    {
	eventlog(eventlog_level_error,__FUNCTION__,"got NULL account");
	return -1;
    }
    if (!username)
    {
	eventlog(eventlog_level_error,__FUNCTION__,"got NULL username");
	return -1;
    }
    
    if (username[0]=='#')
        if (str_to_uint(&username[1],&userid)<0)
            userid = 0;
    
    if (userid)
    {
        if (account->uid==userid)
            return 1;
    }
    else
    {
	namehash = account_hash(username);
        if (account->namehash==namehash &&
	    (tname = account_get_name(account)))
	{
	    if (strcasecmp(tname,username)==0)
		return 1;
	}
    }
    
    return 0;
}