Example #1
0
/**
 * Verify that calculated hash doesn't depend on message alignment.
 */
static void test_alignment(void)
{
	int i, start, hash_id, alignment_size;

	/* loop by sums */
	for(i = 0, hash_id = 1; (hash_id & RHASH_ALL_HASHES); hash_id <<= 1, i++) {
		char expected_hash[130];
		assert(rhash_get_digest_size(hash_id) < (int)sizeof(expected_hash));

		alignment_size = (hash_id & (RHASH_TTH | RHASH_TIGER | RHASH_WHIRLPOOL | RHASH_SHA512) ? 8 : 4);

		/* start message with different alignment */
		for(start = 0; start < alignment_size; start++) {
			char message[30];
			int j, msg_length = 11 + alignment_size;

			/* fill the buffer fifth shifted letter sequence */
			for(j = 0; j < msg_length; j++) message[start + j] = 'a' + j;
			message[start + j] = 0;

			if(start == 0) {
				/* save original hash value */
				strcpy(expected_hash, hash_message(hash_id, message + start, 0));
			} else {
				/* verify obtained hash value */
				assert_hash(hash_id, message + start, expected_hash, 0);
			}
		}
	}
}
Example #2
0
File: cparse.c Project: hsbt/racc
static VALUE
initialize_params(VALUE vparams, VALUE parser, VALUE lexer, VALUE lexmid)
{
    struct cparse_params *v;

    Data_Get_Struct(vparams, struct cparse_params, v);
    v->value_v = vparams;
    v->parser = parser;
    v->lexer = lexer;
    if (! NIL_P(lexmid))
        v->lexmid = value_to_id(lexmid);
    v->debug = RTEST(rb_ivar_get(parser, id_yydebug));

    Check_Type(arg, T_ARRAY);
    if (!(13 <= RARRAY_LEN(arg) && RARRAY_LEN(arg) <= 14))
        rb_raise(RaccBug, "[Racc Bug] wrong arg.size %ld", RARRAY_LEN(arg));
    v->action_table   = assert_array  (rb_ary_entry(arg,  0));
    v->action_check   = assert_array  (rb_ary_entry(arg,  1));
    v->action_default = assert_array  (rb_ary_entry(arg,  2));
    v->action_pointer = assert_array  (rb_ary_entry(arg,  3));
    v->goto_table     = assert_array  (rb_ary_entry(arg,  4));
    v->goto_check     = assert_array  (rb_ary_entry(arg,  5));
    v->goto_default   = assert_array  (rb_ary_entry(arg,  6));
    v->goto_pointer   = assert_array  (rb_ary_entry(arg,  7));
    v->nt_base        = assert_integer(rb_ary_entry(arg,  8));
    v->reduce_table   = assert_array  (rb_ary_entry(arg,  9));
    v->token_table    = assert_hash   (rb_ary_entry(arg, 10));
    v->shift_n        = assert_integer(rb_ary_entry(arg, 11));
    v->reduce_n       = assert_integer(rb_ary_entry(arg, 12));
    if (RARRAY_LEN(arg) > 13) {
        v->use_result_var = RTEST(rb_ary_entry(arg, 13));
    }
    else {
        v->use_result_var = Qtrue;
    }

    v->use_result_var  = NUM2INT(rb_ivar_get(parser, id_use_result));

    /* if (RARRAY_LEN(arg) > 13) { */
    /*     v->use_result_var = RTEST(RARRAY_PTR(arg)[13]); */
    /* } */
    /* else { */
    /*     v->use_result_var = Qtrue; */
    /* } */

    PUSH(v->state, INT2FIX(0));

    rb_ivar_set(parser, id_errstatus, LONG2NUM(v->errstatus));

    rb_iv_set(parser, "@vstack", v->vstack);

    if (v->debug) {
        rb_iv_set(parser, "@tstack", v->tstack);
    }
    else {
        rb_iv_set(parser, "@tstack", Qnil);
    }

    return vparams;
}
Example #3
0
EAssertResult CBatchTestEventHandler::OnAssert( const char * expression, const char * file, unsigned int line, const char * formatted_msg )
{
	u32		assert_hash( murmur2_hash( (const u8 *)file, strlen( file ), line ) );

	std::vector<u32>::iterator	it( std::lower_bound( mAsserts.begin(), mAsserts.end(), assert_hash ) );
	if( it == mAsserts.end() || *it != assert_hash )
	{
		if( gRomLogFH )
		{
			fprintf( gRomLogFH, "! Assert Failed: Location: %s(%d), [%s] %s\n", file, line, expression, formatted_msg );
		}

		mAsserts.insert( it, assert_hash );
	}

	// Don't return AR_IGNORE as this prevents asserts firing for subsequent roms
	return AR_IGNORE_ONCE;
}
Example #4
0
/**
 * Test a hash algorithm on array of known short messages.
 *
 * @param hash_id id of the algorithm to test
 * @param ptr pointer to array of pairs <message,expected-hash>
 * @param set_filename need to set a filename for BTIH hash
 */
static void test_known_strings_pairs(unsigned hash_id, const char** ptr, int set_filename)
{
	for(; ptr[0] && ptr[1]; ptr += 2) {
		assert_hash(hash_id, ptr[0], ptr[1], set_filename);
	}
}
Example #5
0
static VALUE
initialize_params(VALUE vparams, VALUE parser, VALUE arg, VALUE lexer, VALUE lexmid)
{
    struct cparse_params *v;

    Data_Get_Struct(vparams, struct cparse_params, v);
    v->value_v = vparams;
    v->parser = parser;
    v->lexer = lexer;
    if (! NIL_P(lexmid))
        v->lexmid = value_to_id(lexmid);

    v->debug = RTEST(rb_ivar_get(parser, id_yydebug));

    Check_Type(arg, T_ARRAY);
    if (!(13 <= RARRAY_LEN(arg) && RARRAY_LEN(arg) <= 14))
        rb_raise(RaccBug, "[Racc Bug] wrong arg.size %ld", RARRAY_LEN(arg));
    v->action_table   = assert_array  (RARRAY_PTR(arg)[ 0]);
    v->action_check   = assert_array  (RARRAY_PTR(arg)[ 1]);
    v->action_default = assert_array  (RARRAY_PTR(arg)[ 2]);
    v->action_pointer = assert_array  (RARRAY_PTR(arg)[ 3]);
    v->goto_table     = assert_array  (RARRAY_PTR(arg)[ 4]);
    v->goto_check     = assert_array  (RARRAY_PTR(arg)[ 5]);
    v->goto_default   = assert_array  (RARRAY_PTR(arg)[ 6]);
    v->goto_pointer   = assert_array  (RARRAY_PTR(arg)[ 7]);
    v->nt_base        = assert_integer(RARRAY_PTR(arg)[ 8]);
    v->reduce_table   = assert_array  (RARRAY_PTR(arg)[ 9]);
    v->token_table    = assert_hash   (RARRAY_PTR(arg)[10]);
    v->shift_n        = assert_integer(RARRAY_PTR(arg)[11]);
    v->reduce_n       = assert_integer(RARRAY_PTR(arg)[12]);
    if (RARRAY_LEN(arg) > 13) {
        v->use_result_var = RTEST(RARRAY_PTR(arg)[13]);
    }
    else {
        v->use_result_var = Qtrue;
    }

    v->tstack = v->debug ? NEW_STACK() : Qnil;
    v->vstack = NEW_STACK();
    v->state = NEW_STACK();
    v->curstate = 0;
    PUSH(v->state, INT2FIX(0));
    v->t = INT2FIX(FINAL_TOKEN + 1);   /* must not init to FINAL_TOKEN */
    v->nerr = 0;
    v->errstatus = 0;
    rb_ivar_set(parser, id_errstatus, LONG2NUM(v->errstatus));

    v->retval = Qnil;
    v->fin = 0;

    v->lex_is_iterator = Qfalse;

    rb_iv_set(parser, "@vstack", v->vstack);
    if (v->debug) {
        rb_iv_set(parser, "@tstack", v->tstack);
    }
    else {
        rb_iv_set(parser, "@tstack", Qnil);
    }

    return vparams;
}