cwe - 479:信号处理器使用不可重入函数
视图定制的信息:
不可重入函数是函数不能安全地,打断,然后回忆起第一次调用完成之前没有导致内存泄露。这可能会导致一个意想不到的系统状态和不可预测的结果与各种各样的潜在后果取决于上下文,包括拒绝服务和代码的执行。 许多函数是不可重入的,但是其中的一些会导致记忆的腐败,如果他们被用在一个信号处理程序。syslog()函数调用是一个这样的例子。为了执行其功能,它分配少量的内存空间。”If syslog() is suspended by a signal call and the signal handler calls syslog(), the memory used by both of these functions enters an undefined, and possibly, exploitable state. Implementations of malloc() and free() manage metadata in global structures in order to track which memory is allocated versus which memory is available, but they are non-reentrant. Simultaneous calls to these functions can cause corruption of the metadata. ![]() ![]()
![]() ![]()
![]() 语言 C患病率(待定) c++患病率(待定) ![]()
示例1 在这个例子中,一个信号处理程序使用syslog()日志信息:
(坏的代码)
char *消息;
空白sh (int假){
syslog (LOG_NOTICE“% s \ n”,消息); }睡眠(10); 退出(0); int主要(int命令行参数个数,char * argv []) {
… }信号(SIGHUP, sh); 信号(SIGTERM, sh); 睡眠(10); 退出(0);
如果第一次调用的执行信号处理程序暂停后调用syslog()和信号处理程序被称为第二次分配的内存由syslog()进入一个未定义的,并可能,可利用的状态。
![]()
更多的信息是可用的,请选择一个不同的过滤器。
|
使用常见的弱点枚举(CWE)和相关的引用从这个网站的使用条款。CWE赞助的美国国土安全部(DHS)网络和基础设施安全机构(CISA)和管理的国土安全系统工程和发展研究所这是由(HSSEDI)manbetx客户端首页(斜方)。版权©2006 - 2023,斜方公司。manbetx客户端首页CWE、水煤浆、CWRAF, CWE标志是斜方公司的商标。manbetx客户端首页 |