예제 #1
0
파일: bstr_tests.c 프로젝트: wenzong/lab
char *test_bstricmp() {
    bstring bstr_a = bfromcstr("a");
    bstring bstr_b = bfromcstr("b");
    int rc = bstricmp(bstr_a, bstr_b);
    mu_assert(rc == -1, "a b should bstricmp -1");

    bassigncstr(bstr_a, "a");
    bassigncstr(bstr_b, "A");
    rc = bstricmp(bstr_a, bstr_b);
    mu_assert(rc == 0, "a A should bstricmp 0");

    bassigncstr(bstr_a, "ab");
    bassigncstr(bstr_b, "AB1");
    rc = bstricmp(bstr_a, bstr_b);
    mu_assert(rc == -49, "ab AB1 should bstricmp -49");

    bassigncstr(bstr_a, "ab");
    bassigncstr(bstr_b, "");
    rc = bstricmp(bstr_a, bstr_b);
    mu_assert(rc == 97, "ab \"\" should bstricmp 97");

    bdestroy(bstr_a);
    bdestroy(bstr_b);
    return NULL;
}
예제 #2
0
char *test_bstricmp(void)
{
	bstring b0 = bfromcstr(test);
	bstring b1 = bfromcstr(test);
	mu_assert(bstricmp(b0, b1) == 0,"Failed to bstricmp().");

	mu_assert(bdestroy(b1) == BSTR_OK, "Failed to bdestroy() afetr bstricmp().");
	b1 = bfromcstr(test_1);
	mu_assert(bstricmp(b0, b1) != 0,"Failed to bstricmp().");
	
	mu_assert(bdestroy(b0) == BSTR_OK, "Failed to bdestroy() afetr bstricmp().");
	mu_assert(bdestroy(b1) == BSTR_OK, "Failed to bdestroy() afetr bstricmp().");
	return NULL;
}
예제 #3
0
int result(int human, int computer)
{
    bstring humanchoice = bfromcstr(choices[human]);
    bstring computerchoice = bfromcstr(choices[computer]);

    int i;
    for(i = 0; i < MOVES; i++) {
        if(bstricmp(bfromcstr(games[i]->player1), humanchoice) == 0 && bstricmp(bfromcstr(games[i]->player2), computerchoice) == 0) {
            hwins++;
            printf("Human Wins !!\n");
            return i;
        }
        else if(bstricmp(bfromcstr(games[i]->player1), computerchoice) == 0 && bstricmp(bfromcstr(games[i]->player2), humanchoice) == 0) {
            cwins++;
            printf("Computer Wins !!\n");
            return i;
        }

    }

    return 0;
}
예제 #4
0
파일: bstr_tests.c 프로젝트: wenzong/lab
char *test_bstrcpy() {
    char * test_string = "hello";
    bstring bstr = bfromcstr(test_string);

    bstring copy_of_bstr = bstrcpy(bstr);

    mu_assert(bstr->slen == copy_of_bstr->slen, "bstrcopy slen error.");
    mu_assert(bstr->mlen == copy_of_bstr->mlen, "bstrcopy mlen error.");
    mu_assert(bstricmp(bstr, copy_of_bstr) == 0, "bstrcopy compare failed.");

    int rc = bdestroy(bstr);
    mu_assert(rc == BSTR_OK, "destroy bstring failed");
    rc = bdestroy(copy_of_bstr);
    mu_assert(rc == BSTR_OK, "destroy copy of bstring failed");

    return NULL;
}
예제 #5
0
static int
ssh_validate_hostkey(obfsproxyssh_client_session_t *session)
{
	obfsproxyssh_t *state = session->client->state;
	const char *hkey_method;
	bstring trusted_fp;
	const char *fp;
	bstring fp_s;
	int i, len, dlen;

	hkey_method = libssh2_session_methods(session->ssh_session,
			LIBSSH2_METHOD_HOSTKEY);

	if (0 == strcmp(hkey_method, "ssh-rsa"))
		trusted_fp = session->hostkey_rsa;
	else if (0 == strcmp(hkey_method, "ssh-dss"))
		trusted_fp = session->hostkey_dss;
	else {
		log_f(state, "SSH: Error: Supplied hostkey method is invalid (%s)",
				bdata(session->ssh_addr),
				hkey_method);
		return -1;
	}

	len = blength(trusted_fp);
	switch (len) {
	case OBFSPROXYSSH_CLIENT_MD5_FP_LEN:
		fp = libssh2_hostkey_hash(session->ssh_session,
				LIBSSH2_HOSTKEY_HASH_MD5);
		dlen = 16;
		break;
	case OBFSPROXYSSH_CLIENT_SHA1_FP_LEN:
		fp = libssh2_hostkey_hash(session->ssh_session,
				LIBSSH2_HOSTKEY_HASH_SHA1);
		dlen = 20;
		break;
	default:
		log_f(state, "SSH: Error: Supplied hostkey length is invalid (%s)",
				bdata(session->ssh_addr),
				bdata(trusted_fp));
		return -1;
	}

	fp_s = bfromcstralloc(len, "");
	for (i = 0; i < dlen; i++) {
		bformata(fp_s, "%02X", (unsigned char) fp[i]);
		if (i != dlen - 1)
			bconchar(fp_s, ':');
	}

	i = bstricmp(trusted_fp, fp_s);

	if (0 != i)
		log_f(state, "SSH: Error: %s Hostkey mismatch (Got: %s, Expecting: %s)",
				bdata(session->ssh_addr),
				bdata(trusted_fp),
				bdata(fp_s));
	else
		log_f(state, "SSH: %s Hostkey matched (%s)",
				bdata(session->ssh_addr),
				bdata(trusted_fp));

	return (0 == i) ? 0 : -1;
}