这个例子包含一个小的堆栈分配内存。当程序第一次被建造,这个内存分配的次数可能是微不足道的,没有问题。随着时间的推移,随着数据库中对象的数量的增长,分配的数量将增长,最终消耗可用的堆栈,即。“栈疲惫。”An attacker who is able to add elements to the database could cause stack exhaustion more rapidly than assumed by the developer.
(坏的代码)
例如语言:C
/ /得到了从数据库中对象的数量大小,随着时间的推移,可以想象得到非常大的 int end_limit = get_nmbr_obj_from_db (); int我; int *基础=零; int * p =基地; (我= 0;我< end_limit;我+ +) {
* p = alloca (sizeof (int *));/ /分配内存的堆栈 p = * p;/ / / /点被保存到下一个位置