Example #1
0
static int parse_dbi_ex_header(char *data, int max_len, SDBIExHeader *dbi_ex_header)
{
	ut32 read_bytes = 0, before_read_bytes = 0;

	READ(read_bytes, 4, max_len, dbi_ex_header->opened, data, ut32);

	before_read_bytes = read_bytes;
	read_bytes += parse_ssymbol_range (data, max_len, &dbi_ex_header->range);
	data += (read_bytes - before_read_bytes);

	READ(read_bytes, 2, max_len, dbi_ex_header->flags, data, ut16);
	READ(read_bytes, 2, max_len, dbi_ex_header->stream, data, short);
	READ(read_bytes, 4, max_len, dbi_ex_header->symSize, data, ut32);
	READ(read_bytes, 4, max_len, dbi_ex_header->oldLineSize, data, ut32);
	READ(read_bytes, 4, max_len, dbi_ex_header->lineSize, data, ut32);
	READ(read_bytes, 2, max_len, dbi_ex_header->nSrcFiles, data, short);
	READ(read_bytes, 2, max_len, dbi_ex_header->padding1, data, short);
	READ(read_bytes, 4, max_len, dbi_ex_header->offsets, data, ut32);
	READ(read_bytes, 4, max_len, dbi_ex_header->niSource, data, ut32);
	READ(read_bytes, 4, max_len, dbi_ex_header->niCompiler, data, ut32);

	before_read_bytes = read_bytes;
	parse_sctring(&dbi_ex_header->modName, (unsigned char *)data, &read_bytes, max_len);
	data += (read_bytes - before_read_bytes);

	before_read_bytes = read_bytes;
	parse_sctring(&dbi_ex_header->objName, (unsigned char *)data, &read_bytes, max_len);
	data += (read_bytes - before_read_bytes);

	return read_bytes;
}
Example #2
0
static int parse_global(char *data, int data_size, SGlobal *global) {
	unsigned int read_bytes = 2;

	READ(read_bytes, 4, data_size, global->symtype, data, unsigned int);
	READ(read_bytes, 4, data_size, global->offset, data, unsigned int);
	READ(read_bytes, 2, data_size, global->segment, data, unsigned short);
	if (global->leaf_type == 0x110E) {
		parse_sctring(&global->name, (unsigned char *)data, &read_bytes, data_size);
	} else {
		READ(read_bytes, 1, data_size, global->name.size, data, unsigned char);
		init_scstring(&global->name, global->name.size, data);
	}

	return read_bytes;
}