Esempio n. 1
0
void
retrieve_mysql_user_pwd_info(char *pairs)
{
    char       *p, *end, *q, *next, *pair_end;
    size_t      len;  
    uint64_t    key;
    mysql_user *p_user_info, *p_tmp_user_info;
    
    user_pwd_table = hash_create(256);
    strcpy(user_pwd_table->name, "user password table");

    p   = pairs;
    len = strlen(p);
    end = p + len;

    if (len <= 1) {
        log_info(LOG_WARN, "use password error:%s", pairs);
        exit(1);
    }

    do{
        next = strchr(p, ':');
        q = strchr(p, '@');

        if ( next != NULL) {
            if (next != p) {
                pair_end = next - 1;
            } else {
                log_info(LOG_WARN, "use password info error:%s", pairs);
                exit(1);
            }
        } else {
            pair_end = p + strlen(p) - 1;
        }

        if ((q-p) >= 256 || (pair_end - q) >= 256) {
            log_info(LOG_WARN, "too long for user or password");
            exit(1);
        }

        p_user_info = (mysql_user*)calloc(1, sizeof(mysql_user));
        strncpy(p_user_info->user, p, q-p);
        strncpy(p_user_info->password, q + 1, pair_end - q);
        key = get_key_from_user(p_user_info->user);
        p_tmp_user_info = hash_find(user_pwd_table, key);

        if (NULL == p_tmp_user_info) {
            hash_add(user_pwd_table, key, (void *)p_user_info);
        } else {
            p_tmp_user_info->next = p_user_info;
        }

        if (next != NULL) {
            p = next + 1;
        } else {
            break;
        }
    }while (p < end) ;
}
Esempio n. 2
0
File: pairs.c Progetto: jbli/tcpcopy
char *retrieve_user_pwd(char *user)
{
    mysql_user *p_user_info;
    uint64_t   key;

    key = get_key_from_user(user);
    p_user_info = hash_find(user_pwd_table, key);

    while(p_user_info){
        if(strcmp(p_user_info->user, user) == 0){
            return p_user_info->password;
        }
        p_user_info = p_user_info->next;
    }

    return NULL;
}