Revision 04d4b0c3
b/elf_ops.h | ||
---|---|---|
167 | 167 |
if (!phdr) |
168 | 168 |
goto fail; |
169 | 169 |
if (read(fd, phdr, size) != size) |
170 |
goto fail1;
|
|
170 |
goto fail; |
|
171 | 171 |
if (must_swab) { |
172 | 172 |
for(i = 0; i < ehdr.e_phnum; i++) { |
173 | 173 |
ph = &phdr[i]; |
... | ... | |
184 | 184 |
data = qemu_mallocz(mem_size); |
185 | 185 |
if (ph->p_filesz > 0) { |
186 | 186 |
if (lseek(fd, ph->p_offset, SEEK_SET) < 0) |
187 |
goto fail2;
|
|
187 |
goto fail; |
|
188 | 188 |
if (read(fd, data, ph->p_filesz) != ph->p_filesz) |
189 |
goto fail2;
|
|
189 |
goto fail; |
|
190 | 190 |
} |
191 | 191 |
addr = ph->p_vaddr + virt_to_phys_addend; |
192 | 192 |
|
... | ... | |
200 | 200 |
} |
201 | 201 |
qemu_free(phdr); |
202 | 202 |
return total_size; |
203 |
fail2:
|
|
203 |
fail:
|
|
204 | 204 |
qemu_free(data); |
205 |
fail1: |
|
206 | 205 |
qemu_free(phdr); |
207 |
fail: |
|
208 | 206 |
return -1; |
209 | 207 |
} |
210 |
|
Also available in: Unified diff