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; }
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; }
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; }
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; }
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; }