prosyslab-classroom / cs348-information-security

61 stars 10 forks source link

[Question][Hw7] The definition of `Kill` needs to be more clear #367

Closed bonjune closed 1 year ago

bonjune commented 1 year ago

Name: 장봉준

Relation Kill denotes the definitions potentially killed at each point. The fact Kill(l1, l2) represents that the definition at l2 is killed by the definition at l1. In the example, Kill(2, 3) and Kill(3, 2) will be extracted.

What does "potentially" mean here?

Does it just mean definitions are at different branches? Or, does it include the case below?

y = source()
y = 3 // killed the definition above

Also, if it means "definitions at different branches", we would need some kind of derivation (to show that there is no path between two definitions). If so, why the relation is a basic fact?

KihongHeo commented 1 year ago

Hi. "Potentially" means any possibility. Both of your cases should be considered.

Also, your point is correct. Something more (as you call "derivation") is needed. But the fact that "there is no path between two branches" cannot be directly observable at the beginning. Instead, the fixed point computation will gradually observe which part of the program is actually reachable from the source point. The kill relation will be used during the computation. Also, some nonsensical kills (e.g., between two branches) won't be used. So it is okay to simply collect all "potential" kills.

bonjune commented 1 year ago

Thank you prof, it helped me understand the situation.