CN109799992B - 一种城市轨道交通信号系统软件缓冲区范围检查方法 - Google Patents
一种城市轨道交通信号系统软件缓冲区范围检查方法 Download PDFInfo
- Publication number
- CN109799992B CN109799992B CN201811479095.4A CN201811479095A CN109799992B CN 109799992 B CN109799992 B CN 109799992B CN 201811479095 A CN201811479095 A CN 201811479095A CN 109799992 B CN109799992 B CN 109799992B
- Authority
- CN
- China
- Prior art keywords
- range
- address
- buffer area
- software buffer
- array
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种城市轨道交通信号系统软件缓冲区范围检查方法,所述方法包括:在软件缓冲区范围检查函数的执行过程中,注册栈区数组;检查当前指针引用的地址是否在已分配的内存地址区间中,所述内存地址区间为预设区域数组对应的区间;所述预设区域数组包括所述栈区数组、预先注册的全局数组和堆区数组;若第一检查结果为是,则调用与所有区间一一对应的搜索函数,以通过所有搜索函数继续检查所述地址,根据第二检查结果,确定所述地址是否超出软件缓冲区范围。本发明实施例提供的城市轨道交通信号系统软件缓冲区范围检查方法,能够通过简化的代码实现城市轨道交通信号系统软件缓冲区范围检查。
Description
技术领域
本发明实施例涉及轨道交通技术领域,具体涉及一种城市轨道交通信号系统软件缓冲区范围检查方法。
背景技术
在轨道交通信号系统软件中,如区域控制器、车载设备等运营过程中会偶发出现设备宕机的情况,运行日志中很难定位和发现问题。经过室内不断复现测试后,常常发现由于软件缓冲区访问越界而导致程序崩溃。在车辆运营过程中的软件代码中,数组的内存空间都是一次性分配好,然后在程序运行过程中对其进行访问调用,而调用过程中经常会出现访问数组缓冲区越界的情况,而编译器却无法发现这类问题,代码在运行过程中遇到缓冲区越界情况会出现崩溃的情况。
为防止缓冲区越界访问的情况出现,往往会在访问数组缓冲区之前,增加防护代码,再判断访问索引是否超过了缓冲区界限。现有的商业代码检查工具具备检查访问缓冲区越界的情况,并在代码编写完成后进行检查,避免越界代码的存在。但是判断访问索引是否超过了缓冲区界限方式会导致代码的复杂度增高,缓冲区界限的变更也会影响判断代码,导致代码维护困难,并可能出现其他不必要的错误。例如,在某轨道交通运营线路中,时常会因为不明原因导致车辆紧急制动,最终查明是在一个复杂逻辑处理函数中代码修改错误,原因是在一个功能函数中防护函数中使用的缓冲区数组,在逻辑代码的分支基础上,又加入了很多防护分支,导致代码复杂度增大,难以准确理解,导致代码修改时逻辑错误。缓冲区的防护措施影响了既有代码的复杂度,导致偶发问题出现,是需要极力避免的情况。
因此,如何避免上述的技术缺陷,通过简化的代码实现城市轨道交通信号系统软件缓冲区范围检查,成为亟须解决的问题。
发明内容
针对现有技术存在的问题,本发明实施例提供一种城市轨道交通信号系统软件缓冲区范围检查方法,包括:
在软件缓冲区范围检查函数的执行过程中,注册栈区数组;
检查当前指针引用的地址是否在已分配的内存地址区间中,所述内存地址区间为预设区域数组对应的区间;所述预设区域数组包括所述栈区数组、预先注册的全局数组和堆区数组;
若第一检查结果为是,则调用与所有区间一一对应的搜索函数,以通过所有搜索函数继续检查所述地址,根据第二检查结果,确定所述地址是否超出软件缓冲区范围。
本发明实施例提供的城市轨道交通信号系统软件缓冲区范围检查方法,通过先检查当前指针引用的地址是否在预设区域数组对应的区间中,如果在,则再通过搜索函数检查该地址是否超出软件缓冲区范围,能够通过简化的代码实现城市轨道交通信号系统软件缓冲区范围检查。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例城市轨道交通信号系统软件缓冲区范围检查方法的流程示意图;
图2为本发明实施例软件缓冲区范围检查方法的时序图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例城市轨道交通信号系统软件缓冲区范围检查方法的流程示意图,如图1所示,本发明实施例提供了一种城市轨道交通信号系统软件缓冲区范围检查方法,包括以下步骤:
S101:在软件缓冲区范围检查函数的执行过程中,注册栈区数组。
具体的,装置在软件缓冲区范围检查函数的执行过程中,注册栈区数组。装置可以理解为安全计算机平台。图2为本发明实施例软件缓冲区范围检查方法的时序图,如图2所示,软件缓冲区范围检查函数可以理解为在图2中的“缓冲区溢出检查模块”中执行,注册栈区数组可以具体包括:创建栈缓冲区对象;判断栈缓冲区对象的头地址是否在预定义的栈区数组缓冲区的使用范围;如果在,则写入栈缓冲区记录堆栈内(对应图2中的步骤3.1.1),并返回注册栈区数组成功的提示消息;如果不在,则将出错信息写入发送记录板队列。
S102:检查当前指针引用的地址是否在已分配的内存地址区间中,所述内存地址区间为预设区域数组对应的区间;所述预设区域数组包括所述栈区数组、预先注册的全局数组和堆区数组。
具体的,装置检查当前指针引用的地址是否在已分配的内存地址区间中,所述内存地址区间为预设区域数组对应的区间;所述预设区域数组包括所述栈区数组、预先注册的全局数组和堆区数组。当前指针引用的地址可以理解为待检查地址。预设区域数组对应的区间可以理解为所述栈区数组、预先注册的全局数组和堆区数组分别对应的三个区间。检查当前指针引用的地址是否在已分配的内存地址区间中对应图2中的“步骤4.1”。
S103:若第一检查结果为是,则调用与所有区间一一对应的搜索函数,以通过所有搜索函数继续检查所述地址,根据第二检查结果,确定所述地址是否超出软件缓冲区范围。
具体的,装置若判断获知第一检查结果为是,则调用与所有区间一一对应的搜索函数,以通过所有搜索函数继续检查所述地址,根据第二检查结果,确定所述地址是否超出软件缓冲区范围。可以理解的是:如果上述地址在栈区数组、全局数组和堆区数组分别对应的三个区间都存在,则调用这三个区间对应的三个搜索函数,并继续检查该地址,以确定该地址是否有效,即,如果都有效则说明该地址没有超出软件缓冲区范围;如果至少一个无效则说明该地址超出软件缓冲区范围。
本发明实施例提供的城市轨道交通信号系统软件缓冲区范围检查方法,通过先检查当前指针引用的地址是否在预设区域数组对应的区间中,如果在,则再通过搜索函数检查该地址是否超出软件缓冲区范围,能够通过简化的代码实现城市轨道交通信号系统软件缓冲区范围检查。
在上述实施例的基础上,所述根据第二检查结果,确定所述地址是否超出软件缓冲区范围,包括:
若判断获知所述第二检查结果为每个搜索函数检查出的都是有效地址,则确定所述地址不超出软件缓冲区范围。
具体的,装置若判断获知所述第二检查结果为每个搜索函数检查出的都是有效地址,则确定所述地址不超出软件缓冲区范围。参照上述举例,如果上述三个区间对应的三个搜索函数检查出的该地址都是有效地址,则确定该地址不超出软件缓冲区范围。
或,
若判断获知所述第二检查结果为至少一个搜索函数检查出的是无效地址,则确定所述地址超出软件缓冲区范围。
具体的,装置若判断获知所述第二检查结果为至少一个搜索函数检查出的是无效地址,则确定所述地址超出软件缓冲区范围。参照上述举例,即如果上述三个区间对应的三个搜索函数检查出的该地址不全是有效地址,则确定该地址超出软件缓冲区范围。
本发明实施例提供的城市轨道交通信号系统软件缓冲区范围检查方法,进一步能够通过简化的代码实现城市轨道交通信号系统软件缓冲区范围检查。
在上述实施例的基础上,所述方法还包括:
若第一检查结果为否,则直接确定所述地址超出软件缓冲区范围。
具体的,装置若判断获知第一检查结果为否,则直接确定所述地址超出软件缓冲区范围。即该地址不都在上述三个区间中,则直接确定该地址超出软件缓冲区范围。参照图2,还可以反馈检查结果(对应步骤4.2),即包括第一检查结果和第二检查结果;如果反馈出错,再写入记录板(对应步骤4.3)。
本发明实施例提供的城市轨道交通信号系统软件缓冲区范围检查方法,进一步能够快速实现城市轨道交通信号系统软件缓冲区范围检查。
在上述实施例的基础上,所述确定所述地址是否超出软件缓冲区范围的步骤之后,所述方法还包括:
注销所述栈区数组。
具体的,装置注销所述栈区数组。参照图2中的“步骤5和步骤5.1”,可以清除函数作用域内的栈区内存登记数据。
本发明实施例提供的城市轨道交通信号系统软件缓冲区范围检查方法,进一步能够及时清理不必要的数据。
在上述实施例的基础上,所述方法还包括:
通过故障跟踪函数调用所述软件缓冲区范围检查函数。
具体的,装置通过故障跟踪函数调用所述软件缓冲区范围检查函数。故障跟踪函数可以理解为图2中调用“APP”的函数,即对于用户来说,安装了该APP就可以实现调用该软件缓冲区范围检查函数,进而方便实现软件缓冲区范围检查。
本发明实施例提供的城市轨道交通信号系统软件缓冲区范围检查方法,进一步能够方便用户实现软件缓冲区范围检查。
在上述实施例的基础上,所述方法还包括:
周期性调用所述故障跟踪函数,以使所述软件缓冲区范围检查函数周期性执行。
具体的,装置周期性调用所述故障跟踪函数,以使所述软件缓冲区范围检查函数周期性执行。周期性调用的时间间隔可以根据实际情况自主设置,可选为5秒,即每间隔5秒调用一次该故障跟踪函数,进而实现每间隔5秒使该软件缓冲区范围检查函数执行一次该方法。
本发明实施例提供的城市轨道交通信号系统软件缓冲区范围检查方法,进一步能够及时对软件缓冲区范围进行检查。
在上述实施例的基础上,在所述软件缓冲区范围检查函数执行之前,所述方法还包括:
注册所述全局数组和所述堆区数组。
具体的,装置注册所述全局数组和所述堆区数组。对于全局数组和堆区数组分配的内存的登记注册,可以在初始化中调用登记注册函数进行记录,具体可以包括:分别创建全局内存缓冲区对象和堆缓冲区对象,分别判断全局内存缓冲区对象的头地址和堆缓冲区对象的头地址是否在预定义的全局数据区队列,及预定义的堆区数据区队列,如果都在,则分别写入全局数据区队列内、和堆区数据区队列内,并分别返回注册成功的提示消息;如果不都在,则将出错信息写入发送记录板队列。
本发明实施例提供的城市轨道交通信号系统软件缓冲区范围检查方法,通过预先注册全局数组和堆区数组,保证该方法能够正常进行。
在上述实施例的基础上,所述方法还包括:
若确定所述地址超出软件缓冲区范围,则记录所述地址超出软件缓冲区范围的日志。
具体的,装置若确定所述地址超出软件缓冲区范围,则记录所述地址超出软件缓冲区范围的日志。参照图2,记录地址超出软件缓冲区范围的日志,可以具体为:将出错信息写入记录板队列。
本发明实施例提供的城市轨道交通信号系统软件缓冲区范围检查方法,能够便于查看、管理地址超出软件缓冲区范围的日志记录。
本发明实施例提出的方法是专门针对轨道交通信号系统软件运行过程中可能出现的越界情况,进行实时的检查记录和预警,便于定位和修正缓冲区越界问题,提高软件的维护效率,快速定位越界问题,实时记录越界异常。
如在贵阳一号线ZC运行调试过程中出现宕机问题,通过日志记录的缓冲区越界告警情况,开发人员快速定位了宕机的原因和位置,大大缩短了故障分析和缺陷排除时间。
本方法可以使用在重载列车信号系统及基于车车通信的列车控制系统所使用的安全计算机平台中,加快产品问题的故障排查效率,从而能收到运营业主的极力认可。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。
Claims (7)
1.一种城市轨道交通信号系统软件缓冲区范围检查方法,其特征在于,包括:
在软件缓冲区范围检查函数的执行过程中,注册栈区数组;
检查当前指针引用的地址是否在已分配的内存地址区间中,所述内存地址区间为预设区域数组对应的区间;所述预设区域数组包括所述栈区数组、预先注册的全局数组和堆区数组;
若第一检查结果为是,则调用与所有区间一一对应的搜索函数,以通过所有搜索函数继续检查所述地址,根据第二检查结果,确定所述地址是否超出软件缓冲区范围;
所述根据第二检查结果,确定所述地址是否超出软件缓冲区范围,包括:
若判断获知所述第二检查结果为每个搜索函数检查出的都是有效地址,则确定所述地址不超出软件缓冲区范围;
或,
若判断获知所述第二检查结果为至少一个搜索函数检查出的是无效地址,则确定所述地址超出软件缓冲区范围;
所述注册栈区数组具体包括:
创建栈缓冲区对象;
判断栈缓冲区对象的头地址是否在预定义的栈区数组缓冲区的使用范围;
如果在,则写入栈缓冲区记录堆栈内,并返回注册栈区数组成功的提示消息;如果不在,则将出错信息写入发送记录板队列。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若第一检查结果为否,则直接确定所述地址超出软件缓冲区范围。
3.根据权利要求1所述的方法,其特征在于,所述确定所述地址是否超出软件缓冲区范围的步骤之后,所述方法还包括:
注销所述栈区数组。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过故障跟踪函数调用所述软件缓冲区范围检查函数。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
周期性调用所述故障跟踪函数,以使所述软件缓冲区范围检查函数周期性执行。
6.根据权利要求1所述的方法,其特征在于,在所述软件缓冲区范围检查函数执行之前,所述方法还包括:
注册所述全局数组和所述堆区数组。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定所述地址超出软件缓冲区范围,则记录所述地址超出软件缓冲区范围的日志。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811479095.4A CN109799992B (zh) | 2018-12-05 | 2018-12-05 | 一种城市轨道交通信号系统软件缓冲区范围检查方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811479095.4A CN109799992B (zh) | 2018-12-05 | 2018-12-05 | 一种城市轨道交通信号系统软件缓冲区范围检查方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109799992A CN109799992A (zh) | 2019-05-24 |
CN109799992B true CN109799992B (zh) | 2022-07-19 |
Family
ID=66556355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811479095.4A Active CN109799992B (zh) | 2018-12-05 | 2018-12-05 | 一种城市轨道交通信号系统软件缓冲区范围检查方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109799992B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182572B (zh) * | 2020-08-25 | 2024-09-20 | 通号城市轨道交通技术有限公司 | 一种城轨联锁软件代码静态度量方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818822A (zh) * | 2005-02-07 | 2006-08-16 | 福建东方微点信息安全有限责任公司 | 缓冲区溢出攻击的检测方法 |
CN101561775A (zh) * | 2009-05-12 | 2009-10-21 | 华为技术有限公司 | 内存监控方法和装置 |
CN102866953A (zh) * | 2011-07-08 | 2013-01-09 | 风网科技(北京)有限公司 | 存储管理系统及其存储管理方法 |
CN105988921A (zh) * | 2015-02-06 | 2016-10-05 | 中兴通讯股份有限公司 | 一种内存越界的检测方法及装置 |
CN106682492A (zh) * | 2015-11-06 | 2017-05-17 | 大唐移动通信设备有限公司 | 一种内存越界的管理方法及装置 |
CN106919454A (zh) * | 2017-01-25 | 2017-07-04 | 福建三元达网络技术有限公司 | 基于lte协议栈的内存池问题定位方法及其系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2372034A1 (en) * | 2002-02-14 | 2003-08-14 | Cloakware Corporation | Foiling buffer-overflow and alien-code attacks by encoding |
US8302086B2 (en) * | 2009-12-18 | 2012-10-30 | Oracle America, Inc. | System and method for overflow detection using symbolic analysis |
US8561198B2 (en) * | 2010-05-07 | 2013-10-15 | Mcafee, Inc. | Detection of malicious system calls |
CN104636256B (zh) * | 2015-02-17 | 2017-10-24 | 中国农业银行股份有限公司 | 一种内存访问异常的检测方法及装置 |
CN107220182B (zh) * | 2017-06-20 | 2019-07-26 | 中国电子科技集团公司第五十四研究所 | 一种内存重复释放错误检测方法 |
-
2018
- 2018-12-05 CN CN201811479095.4A patent/CN109799992B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818822A (zh) * | 2005-02-07 | 2006-08-16 | 福建东方微点信息安全有限责任公司 | 缓冲区溢出攻击的检测方法 |
CN101561775A (zh) * | 2009-05-12 | 2009-10-21 | 华为技术有限公司 | 内存监控方法和装置 |
CN102866953A (zh) * | 2011-07-08 | 2013-01-09 | 风网科技(北京)有限公司 | 存储管理系统及其存储管理方法 |
CN105988921A (zh) * | 2015-02-06 | 2016-10-05 | 中兴通讯股份有限公司 | 一种内存越界的检测方法及装置 |
CN106682492A (zh) * | 2015-11-06 | 2017-05-17 | 大唐移动通信设备有限公司 | 一种内存越界的管理方法及装置 |
CN106919454A (zh) * | 2017-01-25 | 2017-07-04 | 福建三元达网络技术有限公司 | 基于lte协议栈的内存池问题定位方法及其系统 |
Non-Patent Citations (1)
Title |
---|
基于备份控制流信息的缓冲区溢出监测技术;谢汶兵等;《计算机工程与应用》;20150417(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109799992A (zh) | 2019-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6829729B2 (en) | Method and system for fault isolation methodology for I/O unrecoverable, uncorrectable error | |
EP3660681B1 (en) | Memory fault detection method and device, and server | |
US6745383B1 (en) | Early warning mechanism for enhancing enterprise availability | |
US7210071B2 (en) | Fault tracing in systems with virtualization layers | |
JPH02105947A (ja) | コンピユータ周辺サブシステム及びその例外事象自動検出分析方法 | |
US20140188829A1 (en) | Technologies for providing deferred error records to an error handler | |
CN104685474A (zh) | 包括不可纠正的错误的地址范围的通知 | |
KR100990700B1 (ko) | 정보 처리 장치, 장해 처리 방법, 및 장해 처리 프로그램을기록한 컴퓨터 판독 가능한 기록 매체 | |
CN109799992B (zh) | 一种城市轨道交通信号系统软件缓冲区范围检查方法 | |
CN112925524A (zh) | 一种检测驱动程序中不安全直接存储器访问的方法及装置 | |
CN114860487A (zh) | 一种内存故障识别方法及一种内存故障隔离方法 | |
CN111209129A (zh) | 基于amd平台的内存优化方法和装置 | |
CN112099472A (zh) | 自动化测试方法、装置、电子设备及存储介质 | |
CN117271190A (zh) | 硬件可纠正错误处理方法及系统 | |
CN114415970B (zh) | 分布式存储系统的磁盘故障处理方法、装置及服务器 | |
CN117149644A (zh) | 内存溢出检测方法、装置、操作系统、设备及存储介质 | |
CN114500249B (zh) | 一种根因定位方法和装置 | |
CN113094221B (zh) | 故障注入方法、装置、计算机设备以及可读存储介质 | |
CN116048394A (zh) | 分布式缓存方法、装置、电子设备及存储介质 | |
CN114911659A (zh) | 一种ce风暴抑制方法、装置及相关设备 | |
CN113625957A (zh) | 一种硬盘故障的检测方法、装置及设备 | |
JP3342039B2 (ja) | ファイルを管理する処理装置 | |
JP7246032B2 (ja) | 車載セキュアストレージシステム | |
US6463559B1 (en) | Non-volatile fault indicator | |
CN102549550B (zh) | 一种数据访问方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |