Exemplo n.º 1
0
    // Run each function from the specified set of functions in order to produce an output set for each function.  Then insert
    // the functions into the bottom of the specified PartitionForest.  This runs one iteration of partitioning.
    void partition_functions(RTS_Message *m, PartitionForest &partition,
                             const Functions &functions, PointerDetectors &pointers,
                             InputValues &inputs, PartitionForest::Vertex *parent) {
        for (Functions::const_iterator fi=functions.begin(); fi!=functions.end(); ++fi) {
            PointerDetectors::iterator ip = pointers.find(*fi);
            assert(ip!=pointers.end());
            CloneDetection::Outputs<RSIM_SEMANTICS_VTYPE> *outputs = fuzz_test(*fi, inputs, ip->second);
#if 1 /*DEBUGGING [Robb Matzke 2013-01-14]*/
            std::ostringstream output_values_str;
            OutputValues output_values = outputs->get_values();
            for (OutputValues::iterator ovi=output_values.begin(); ovi!=output_values.end(); ++ovi)
                output_values_str <<" " <<*ovi;
            m->mesg("%s: function output values are {%s }", name, output_values_str.str().c_str());
#endif
            partition.insert(*fi, output_values, parent);
        }
    }
Exemplo n.º 2
0
int main(int argc, char *argv[])
{
	LHADecoderType *dtype;
	unsigned int i;
	time_t now;
	char timestr[32];

	if (argc < 2) {
		printf("Usage: %s <decoder-type> [filename]\n", argv[0]);
		exit(-1);
	}

	algorithm = argv[1];

	dtype = lha_decoder_for_name(algorithm);

	if (dtype == NULL) {
		fprintf(stderr, "Unknown decoder type '%s'\n", algorithm);
		exit(-1);
	}

	if (argc >= 3) {
		run_from_file(dtype, argv[2]);
	} else {
		signal(SIGALRM, alarm_signal);
		signal(SIGSEGV, crash_signal);

		srand(time(NULL));

		for (i = 0; ; ++i) {
			now = time(NULL);
			strftime(timestr, sizeof(timestr),
			         "%Y-%m-%dT%H:%M:%S", localtime(&now));
			printf("%s - Iteration %i:\n", timestr, i);
			fuzz_test(dtype, MAX_FUZZ_LEN);
		}
	}

	return 0;
}
Exemplo n.º 3
0
 // Run a single function, look at its outputs, and insert it into the correct place in the PartitionForest
 void insert_function(SgAsmFunction *func, InputValues &inputs, CloneDetection::PointerDetector &pointers,
                      PartitionForest &partition, PartitionForest::Vertex *parent) {
     CloneDetection::Outputs<RSIM_SEMANTICS_VTYPE> *outputs = fuzz_test(func, inputs, pointers);
     OutputValues concrete_outputs = outputs->get_values();
     partition.insert(func, concrete_outputs, parent);
 }