阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。 【说明】 代码安全漏洞往往是系统或者网络被攻破的头号杀手。在C语言程序开发中,由于C语言自身语法的一些特性,很容易出现各种安全漏洞。因此,应该在C程序开发中充分利用现有开发工具提供的各种安全编译选项

admin2021-02-03  63

问题 阅读下列说明和图,回答问题,将解答填入答题纸的对应栏内。
【说明】
代码安全漏洞往往是系统或者网络被攻破的头号杀手。在C语言程序开发中,由于C语言自身语法的一些特性,很容易出现各种安全漏洞。因此,应该在C程序开发中充分利用现有开发工具提供的各种安全编译选项,减少出现漏洞的可能性。
图5-2给出了c程序的典型内存布局,请回答如下问题。

(1)请问图5-1的代码中第9行的变量authenticated保存在图5-2所示的哪个区域中?
(2)请问stack的两个典型操作是什么?
(3)在图5-2中的stack区域保存数据时,其地址增长方向是往高地址还是往低地址增加?
(4)对于图5-1代码中的第9行和第10行代码的两个变量,哪个变量对应的内存地址更高?

选项

答案(1)stack (2)push和pop或者压栈和弹栈 (3)高地址 (4)第9行或者authenticated变量

解析 第9行的变量authenticated同样是本地变量,因此位于堆栈(stack)区域。堆栈结构常见的操作就是push和pop。在数据往堆栈区域写时,都是往高地址写的。在入栈时,则是第9行的变量先入栈在高地址,后续的第10行代码对应的变量buffer后入栈在低地址,因此第9行的变量在高地址。只有这样在往buffer数组拷贝过多的数据时,才会覆盖掉后续的authenticated变量。
转载请注明原文地址:https://jikaoti.com/ti/wyoiFFFM
0

相关试题推荐
最新回复(0)