On 8/28/07, ron minnich rminnich@gmail.com wrote:
On 8/28/07, Uwe Hermann uwe@hermann-uwe.de wrote:
Yes, good idea IMO.
Maybe 'LAR Magic 0.01' or something similar?
Again, given current brute force search, this won't help, since that string will appear in the data segment. The most reliable fix is the one I posted; the most proper fix is stefan's "let's stop being stupid" which I will try to implement now.
OOOPS. We are being smart, it turns out:
header = (struct lar_header *)walk; fullname = walk + sizeof(struct lar_header);
printk(BIOS_SPEW, "LAR: current filename is %s\n", fullname); // FIXME: check checksum
if (strcmp(fullname, filename) == 0) { printk(BIOS_SPEW, "LAR: it matches %s @ %p\n", fullname, header); result->start = walk + ntohl(header->offset); result->len = ntohl(header->len); result->reallen = ntohl(header->reallen); result->compression = ntohl(header->compression); result->entry = (void *)ntohl(header->entry); result->loadaddress = (void *)ntohl(header->loadaddress); printk(BIOS_SPEW, "start %p len %d reallen %d compression %x entry %p loadaddress %p\n", result->start, result->len, result->reallen, result->compression, result->entry, result->loadaddress); return 0; } // skip file walk += (ntohl(header->len) + ntohl(header->offset) - 1) & 0xfffffff0;
But it still failed ...
hmm.
ron