Commit c717d8bf13d4c24372c4885eefa821ec76378d2b
1 parent
7241f532
Simplify guess_disk_lchs - should fix Windows stack corruption spotted by TeLeMa…
…n (patch by Tristan Gingold). git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3953 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
1 additions
and
8 deletions
hw/ide.c
| ... | ... | @@ -2474,22 +2474,17 @@ struct partition { |
| 2474 | 2474 | static int guess_disk_lchs(IDEState *s, |
| 2475 | 2475 | int *pcylinders, int *pheads, int *psectors) |
| 2476 | 2476 | { |
| 2477 | - uint8_t *buf; | |
| 2477 | + uint8_t *buf = s->io_buffer; | |
| 2478 | 2478 | int ret, i, heads, sectors, cylinders; |
| 2479 | 2479 | struct partition *p; |
| 2480 | 2480 | uint32_t nr_sects; |
| 2481 | 2481 | |
| 2482 | - buf = qemu_memalign(512, 512); | |
| 2483 | - if (buf == NULL) | |
| 2484 | - return -1; | |
| 2485 | 2482 | ret = bdrv_read(s->bs, 0, buf, 1); |
| 2486 | 2483 | if (ret < 0) { |
| 2487 | - qemu_free(buf); | |
| 2488 | 2484 | return -1; |
| 2489 | 2485 | } |
| 2490 | 2486 | /* test msdos magic */ |
| 2491 | 2487 | if (buf[510] != 0x55 || buf[511] != 0xaa) { |
| 2492 | - qemu_free(buf); | |
| 2493 | 2488 | return -1; |
| 2494 | 2489 | } |
| 2495 | 2490 | for(i = 0; i < 4; i++) { |
| ... | ... | @@ -2512,11 +2507,9 @@ static int guess_disk_lchs(IDEState *s, |
| 2512 | 2507 | printf("guessed geometry: LCHS=%d %d %d\n", |
| 2513 | 2508 | cylinders, heads, sectors); |
| 2514 | 2509 | #endif |
| 2515 | - qemu_free(buf); | |
| 2516 | 2510 | return 0; |
| 2517 | 2511 | } |
| 2518 | 2512 | } |
| 2519 | - qemu_free(buf); | |
| 2520 | 2513 | return -1; |
| 2521 | 2514 | } |
| 2522 | 2515 | ... | ... |