Long description

Back

Part (1): Line 1: foo:

Line 2: instr underscore 1 slash asterisk start of foo() asterisk slash

Line 3: instr underscore 2

Line 4: instr underscore 3

Line 5:.

Line 6: ret

Line 7:

Line 8:

Line 9:

Line 10:

Line 11: bar:

Line 12: instr underscore 1 slash asterisk start of bar() asterisk slash

Line 13: instr underscore 2

Line 14: instr underscore 3

Line 15:.

Line 16: ret

Line 17:

Line 18:

Line 19:

Line 20:

Line 21: main:

Line 22: instr 1

Line 23:.

Line 24: fptr 1 equals foo

Line 25: fptr 2 equals bar

Line 26:.

Line 27: fptr 1 (); indirect call to foo ()

Line 28: fptr 2 (); indirect call to bar ()

Line 29: instr underscore 21

Line 30: instr underscore 22

Line 31:.

Line 32:

Line 33:

Line 34:

Part 2: Line 1: L 1 slash asterisk label: legitimate indirect call target (8 B) asterisk slash

Line 2: foo:

Line 3: instr underscore 1 slash asterisk start of foo () asterisk slash

Line 4: instr underscore 2

Line 5: instr underscore 3

Line 6:.

Line 7: pop reg 0 slash asterisk store return addr in reg 0 asterisk slash

Line 8: if (asterisk reg 0 not equals L 3) raise underscore alarm () slash asterisk check label asterisk slash

Line 9: else jmp (reg 0 plus 8)

Line 10:

Line 11: L 1 slash asterisk label: legitimate indirect call target () asterisk slash

Line 12: bar:

Line 13: instr underscore 1 slash asterisk start of bar () asterisk slash

Line 14: instr underscore 2

Line 15: instr underscore 3

Line 16:.

Line 17: pop reg 0 slash asterisk store return addr in reg 0 asterisk slash

Line 18: if (asterisk reg 0 not equals L 3) raise underscore alarm () slash asterisk check label asterisk slash

Line 19: else jmp (reg 0 plus 8)

Line 20:

Line 21: main:

Line 22: instr 1

Line 23:.

Line 24: fptr 1 equals foo

Line 25: fptr 2 equals bar

Line 26:

Line 27: if (asterisk (fptr 1 minus 8) not equals L 1) raise underscore alarm ()

Line 28: else (fptr 1) ()

Line 29: L 3 slash asterisk label: legitimate target for return asterisk slash

Line 30: if (asterisk (fptr 2 minus 8) not equals L 1) raise underscore alarm ()

Line 31: else (fptr 1) ()

Line 31:.

Line 32: L 3 slash asterisk label: legitimate target for return asterisk slash

Line 33: instr underscore 21

Line 34: instr underscore 21.

Back