Skip to content

Commit 5d0a743

Browse files
committed
fix attempt for RANGES
1 parent 74c583b commit 5d0a743

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

accel/tcg/cpu-exec.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -371,14 +371,15 @@ void afl_setup(void) {
371371
int have_names = 0;
372372
if (getenv("AFL_QEMU_INST_RANGES")) {
373373
char *str = getenv("AFL_QEMU_INST_RANGES");
374-
char *saveptr1, *saveptr2 = NULL;
374+
char *saveptr1, *saveptr2 = NULL, save_pt1 = NULL;
375375
char *pt1, *pt2, *pt3 = NULL;
376376

377377
while (1) {
378378

379379
pt1 = strtok_r(str, ",", &saveptr1);
380380
if (pt1 == NULL) break;
381381
str = NULL;
382+
save_pt1 = strdup(pt1);
382383

383384
pt2 = strtok_r(pt1, "-", &saveptr2);
384385
pt3 = strtok_r(NULL, "-", &saveptr2);
@@ -390,17 +391,18 @@ void afl_setup(void) {
390391
have_names = 1;
391392
n->start = (target_ulong)-1;
392393
n->end = 0;
393-
n->name = strdup(pt1);
394+
n->name = save_pt1;
394395
} else {
395396
n->start = strtoull(pt2, NULL, 16);
396397
n->end = strtoull(pt3, NULL, 16);
397398
if (n->start && n->end) {
398399
n->name = NULL;
400+
free(save_pt1);
399401
} else {
400402
have_names = 1;
401403
n->start = (target_ulong)-1;
402404
n->end = 0;
403-
n->name = strdup(pt1);
405+
n->name = save_pt1;
404406
}
405407
}
406408

@@ -411,14 +413,15 @@ void afl_setup(void) {
411413

412414
if (getenv("AFL_QEMU_EXCLUDE_RANGES")) {
413415
char *str = getenv("AFL_QEMU_EXCLUDE_RANGES");
414-
char *saveptr1, *saveptr2 = NULL;
416+
char *saveptr1, *saveptr2 = NULL, save_pt1;
415417
char *pt1, *pt2, *pt3 = NULL;
416418

417419
while (1) {
418420

419421
pt1 = strtok_r(str, ",", &saveptr1);
420422
if (pt1 == NULL) break;
421423
str = NULL;
424+
save_pt1 = strdup(pt1);
422425

423426
pt2 = strtok_r(pt1, "-", &saveptr2);
424427
pt3 = strtok_r(NULL, "-", &saveptr2);
@@ -431,17 +434,18 @@ void afl_setup(void) {
431434
have_names = 1;
432435
n->start = (target_ulong)-1;
433436
n->end = 0;
434-
n->name = strdup(pt1);
437+
n->name = save_pt1;
435438
} else {
436439
n->start = strtoull(pt2, NULL, 16);
437440
n->end = strtoull(pt3, NULL, 16);
438441
if (n->start && n->end) {
439442
n->name = NULL;
443+
free(save_pt1);
440444
} else {
441445
have_names = 1;
442446
n->start = (target_ulong)-1;
443447
n->end = 0;
444-
n->name = strdup(pt1);
448+
n->name = save_pt1;
445449
}
446450
}
447451

0 commit comments

Comments
 (0)