mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r13693) -Fix (r11106, r11117): Do not rely on .tar files always ending with a block of zeros.
This commit is contained in:
parent
56379fff51
commit
2b6dee7f64
|
@ -487,8 +487,10 @@ static bool TarListAddFile(const char *filename)
|
|||
char empty[512];
|
||||
memset(&empty[0], 0, sizeof(empty));
|
||||
|
||||
while (!feof(f)) {
|
||||
pos += fread(&th, 1, 512, f);
|
||||
for (;;) { // Note: feof() always returns 'false' after 'fseek()'. Cool, isn't it?
|
||||
size_t num_bytes_read = fread(&th, 1, 512, f);
|
||||
if (num_bytes_read != 512) break;
|
||||
pos += num_bytes_read;
|
||||
|
||||
/* Check if we have the new tar-format (ustar) or the old one (a lot of zeros after 'link' field) */
|
||||
if (strncmp(th.magic, "ustar", 5) != 0 && memcmp(&th.magic, &empty[0], 512 - offsetof(TarHeader, magic)) != 0) {
|
||||
|
|
Loading…
Reference in New Issue