CN111949290B - 一种热补丁管理方法、装置、电子设备及存储介质 - Google Patents
一种热补丁管理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111949290B CN111949290B CN202010672107.6A CN202010672107A CN111949290B CN 111949290 B CN111949290 B CN 111949290B CN 202010672107 A CN202010672107 A CN 202010672107A CN 111949290 B CN111949290 B CN 111949290B
- Authority
- CN
- China
- Prior art keywords
- hot patch
- node
- version
- function
- hot
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/62—Uninstallation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种热补丁管理方法、装置、电子设备及存储介质。该方法包括:接收热补丁安装指令,获取对应的热补丁信息;确定热补丁信息对应的安装版本号、被补丁函数和替换指令;在存储的被补丁函数链表中查找到对应的被补丁函数节点后,获取以被补丁函数节点为链表头的热补丁函数链表;根据安装版本号按照热补丁版本顺序,在热补丁函数链表中构建热补丁信息对应的热补丁节点,在热补丁节点中保存热补丁信息对应的替换指令;获取热补丁函数链表中的最高热补丁版本对应的替换指令;将被补丁函数节点中的入口指令修改为最高热补丁版本对应的替换指令。本发明使得以任意顺序安装卸载补丁时仍然保证生效最新版本热补丁,提高了热补丁安装卸载效率。
Description
技术领域
本发明实施例涉及通信技术领域,具体涉及一种热补丁管理方法、装置、电子设备及存储介质。
背景技术
热补丁能够在不需要重启当前运行系统的前提下修复软件漏洞,是一种快速、低成本修复产品软件版本缺陷的方式。热补丁(函数级)通常是通过将被替换函数(被补丁函数)的入口处指令修改为跳转到新函数(补丁函数)的指令实现。图1为函数级热补丁原理示意图,如图1所示,函数FuncA调用函数FuncB,被补丁函数为FuncB,补丁函数为FuncC,FuncC实质是包含修订后的FuncB的内容,通过将FuncB的入口处指令修改为跳转到FuncC的指令,并使得FuncC函数执行完成后返回到调用函数FuncA,即可达到函数级热补丁替换的目的。
现有技术方案中,对被补丁业务侧的版本管理通常是升级控制端检测不同的版本情况,并控制升级顺序,每次安装新的热补丁后,优先生效新补丁中的补丁函数,同时提供机制能失效所有旧补丁。然而,由于需要被补丁业务侧控制升级顺序,若安装顺序与实际的热补丁版本顺序不一致,则最终生效的将不是最新版本的补丁,导致软件漏洞修复失败。
发明内容
针对现有技术中的缺陷,本发明实施例提供了一种热补丁管理方法、装置、电子设备及存储介质。
第一方面,本发明实施例提供一种热补丁管理方法,包括:
接收热补丁安装指令,获取所述安装指令对应的热补丁信息;
确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;
在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;
根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;
获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;
将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
如上述方法,可选地,还包括:
若存储的被补丁函数链表中未查找到所述被补丁函数对应的被补丁函数节点,则在所述被补丁函数链表中构建所述被补丁函数对应的被补丁函数节点,在所述被补丁函数节点中存储所述被补丁函数的原始入口指令;
以所述被补丁函数节点为链表头,构建热补丁函数链表,按照所述安装版本号在所述热补丁函数链表中构建热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;
将所述被补丁函数节点中的原始入口指令修改为所述热补丁信息对应的替换指令。
如上述方法,可选地,还包括:
接收热补丁卸载指令,获取所述卸载指令对应的卸载版本号;
在存储的所有热补丁函数链表中查找最高热补丁版本对应的热补丁节点,确定所述热补丁节点对应的最高热补丁版本号;
若所述最高热补丁版本号与所述卸载版本号相同,则获取热补丁版本号低于所述最高热补丁版本的次高热补丁版本对应的替换指令,将所述热补丁节点对应的被补丁函数节点中的的入口指令修改为所述次高热补丁版本对应的替换指令,并删除所述热补丁节点。
如上述方法,可选地,还包括:
若无所述次高热补丁版本对应的热补丁节点,则将所述热补丁节点对应的被补丁函数节点中的的入口指令修改为原始入口指令,并删除所述最高热补丁版本对应的热补丁节点和所述被补丁函数节点。
如上述方法,可选地,还包括:
若所述最高热补丁版本号大于所述卸载版本号,则直接删除所述卸载版本号对应的热补丁节点。
第二方面,本发明实施例提供一种热补丁管理装置,包括:
安装模块,用于接收热补丁安装指令,获取所述安装指令对应的热补丁信息;
预处理模块,用于确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;
查找模块,用于在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;
构建模块,用于根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;
获取模块,用于获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;
替换模块,用于将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
如上述装置,可选地,所述构建模块还用于:
若存储的被补丁函数链表中未查找到所述被补丁函数对应的被补丁函数节点,则在所述被补丁函数链表中构建所述被补丁函数对应的被补丁函数节点,在所述被补丁函数节点中存储所述被补丁函数的原始入口指令;
以所述被补丁函数节点为链表头,构建热补丁函数链表,按照所述安装版本号在所述热补丁函数链表中构建热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;
相应地,所述替换模块还用于:
将所述被补丁函数节点中的原始入口指令修改为所述热补丁信息对应的替换指令。
如上述装置,可选地,还包括:
卸载模块,用于接收热补丁卸载指令,获取所述卸载指令对应的卸载版本号;
最高版本确定模块,用于在存储的所有热补丁函数链表中查找最高热补丁版本对应的热补丁节点,确定所述热补丁节点对应的最高热补丁版本号;
处理模块,用于若所述最高热补丁版本号与所述卸载版本号相同,则获取热补丁版本号低于所述最高热补丁版本的次高热补丁版本对应的替换指令,将所述热补丁节点对应的被补丁函数节点中的的入口指令修改为所述次高热补丁版本对应的替换指令,并删除所述热补丁节点。
如上述装置,可选地,所述处理模块还用于:
若无所述次高热补丁版本对应的热补丁节点,则将所述热补丁节点对应的被补丁函数节点中的的入口指令修改为原始入口指令,并删除所述最高热补丁版本对应的热补丁节点和所述被补丁函数节点。
如上述装置,可选地,所述处理模块还用于:
若所述最高热补丁版本号大于所述卸载版本号,则直接删除所述卸载版本号对应的热补丁节点。
第三方面,本发明实施例提供一种电子设备,包括:
存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:接收热补丁安装指令,获取所述安装指令对应的热补丁信息;确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
第四方面,本发明实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下方法:接收热补丁安装指令,获取所述安装指令对应的热补丁信息;确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
本发明实施例提供的热补丁管理方法,构建热补丁函数链表,按热补丁版本顺序存储热补丁的替换指令到热补丁函数链表对应的热补丁函数节点中,并将被补丁函数节点修改为最高热补丁函数版本的替换指令,使得以任意顺序安装卸载补丁时仍然保证生效最新版本热补丁,提高了热补丁安装卸载效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为函数级热补丁原理示意图;
图2为本发明实施例提供的热补丁管理方法流程示意图;
图3为本发明实施例提供的热补丁管理方法中的链表示意图;
图4为本发明实施例提供的热补丁管理装置的结构示意图;
图5为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明实施例提供的热补丁管理方法流程示意图,如图2所示,该方法包括:
步骤S21、接收热补丁安装指令,获取所述安装指令对应的热补丁信息;
具体地,当需要进行软件漏洞修复时,系统会向被补丁侧设备下发热补丁安装指令,其中热补丁安装指令包含了本次需要安装的热补丁信息,例如,热补丁函数、热补丁版本信息等,被补丁侧设备接收到安装指令之后,获取安装指令对应的热补丁信息,确定需要对哪个补丁函数进行热补丁操作。
步骤S22、确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;
具体地,获取安装指令对应的热补丁信息,获取热补丁安装文件。热补丁的最小单元是函数,热补丁安装文件中存放该补丁的版本信息,每个热补丁有唯一的版本号,即热补丁的新旧顺序,从热补丁安装文件中确定被补丁函数、安装版本号,并生成函数入口的替换指令。
步骤S23、在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;
步骤S24、根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;
具体地,当被补丁侧设备接收到热补丁安装指令之后,查找本地是否存储有被补丁函数链表,若没有,则新建被补丁函数链表,表头存储链表说明信息,然后在被补丁函数链表中构建当前安装指令对应的被补丁函数节点,并在被补丁函数节点中存储所述被补丁函数的原始入口指令;之后以被补丁函数节点为链表头,构建热补丁函数链表,按照安装版本号在热补丁函数链表中构建热补丁节点,需要说明的是,这里的热补丁节点不是按照接收安装指令顺序构建的,而是构建到安装版本号对应的节点,即热补丁函数链表中的每个热补丁函数节点是按照安装版本号顺序或倒序排列的,这样,无需知道每个热补丁函数的版本号,仅需通过其在热补丁函数链表中的节点位置,就可确定对应的版本号。之后,在热补丁节点中保存热补丁信息对应的替换指令,由于当前仅建立了一个热补丁函数节点,因此可直接判断该节点对应的版本是最高版本,则将被补丁函数节点中的原始入口指令修改为该热补丁信息对应的替换指令。
如果能查找到被补丁函数链表,则在被补丁函数链表中查找被补丁函数对应的补丁函数节点,若查找到该节点,则获取以补丁函数节点为链表头的热补丁函数链表;根据安装版本号按照热补丁版本顺序,在热补丁函数链表中构建该热补丁信息对应的热补丁节点,在热补丁节点中保存热补丁信息对应的替换指令,此时,由于热补丁函数链表中存在多个热补丁函数节点,因此新构建的热补丁节点对应的版本有可能不是最高热补丁版本。
如果查找到被补丁函数链表,但是在该被补丁函数链表中不存在本次安装指令对应的被补丁函数对应的被补丁函数节点,则在被补丁函数链表中构建该被补丁函数对应的被补丁函数节点,在被补丁函数节点中存储被补丁函数的原始入口指令;之后,以被补丁函数节点为链表头,构建热补丁函数链表,按照安装版本号在热补丁函数链表中构建热补丁节点,在热补丁节点中保存热补丁信息对应的替换指令,由于当前仅建立了一个热补丁函数节点,因此可直接判断该节点对应的版本是最高版本,则将被补丁函数节点中的原始入口指令修改为该热补丁信息对应的替换指令。
步骤S25、获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;
步骤S26、将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
具体地,获取热补丁函数链表中的最高热补丁版本对应的替换指令,由于热补丁函数节点是按照安装版本号对应建立的,因此根据热补丁函数节点位置即可确定热补丁函数的最高版本对应的热补丁节点,由于每个热补丁节点保存了该节点对应的热补丁函数的替换指令,因此可将被补丁函数节点中的入口指令修改为最高热补丁版本对应的替换指令,这样,每接收一个热补丁安装指令,就可得到该热补丁安装指令对应的被补丁函数的替换指令,并且无论接收哪个版本的安装指令,该替换指令都是最高版本的热补丁替换指令,之后,可以直接执行被补丁函数链表中被补丁函数节点保存的替换指令,从而实现函数热补丁升级操作。
例如,当前被补丁模块已经安装了热补丁1、热补丁3,此时需要安装激活热补丁2,其中热补丁版本数字越大,版本号越高,版本越新,需要说明的是,这里的热补丁1、热补丁2等是指一个大版本补丁,其包含了多个被补丁函数。针对已安装的补丁,对所有补丁函数版本,构建数据节点保存在一个热补丁函数链表上,数据节点中保存每个热补丁函数对应的替换指令;针对新安装的补丁,检查未安装过该版本热补丁后,对所有补丁函数,以被补丁函数为链表头,构建数据节点,保存替换指令,按版本顺序加入链表。
图3为本发明实施例提供的热补丁管理方法中的链表示意图,如图3所示,目前已经安装了热补丁1和热补丁3,其中热补丁1已生效了补丁函数FuncB1,热补丁3已生效了补丁函数FuncA3,需要安装热补丁2,即需要安装FuncA2、FuncB2和FuncC2。对FuncA2和FuncB2而言,之前已执行了对原始函数热补丁的操作,因此,被补丁函数链表中已经存储FuncA2和FuncB2的被补丁函数节点FuncA和FuncB,并分别以被补丁函数节点FuncA和FuncB为链表头,构建了热补丁函数链表,FuncA3和FuncB1已按顺序加入到对应的热补丁函数链表中,并在对应节点存储了替换指令,此时FuncA被补丁函数节点的入口指令修改为的FuncA3的替换指令,FuncB被补丁函数节点的入口指令修改为的FuncB1的替换指令。
针对FuncA2和FuncB2而言,由于已经存在对应的热补丁函数链表,仅需按版本顺序加入到对应的热补丁函数链表即可。对FuncC2而言,因为是首次补丁FuncC,在被补丁函数链表中构建FunC数据节点,并以该数据节点为链表头,构建FuncC的热补丁函数链表,然后将FuncC2按版本顺序加入FuncC的热补丁函数链表。
之后对新安装的热补丁,根据版本高低进行激活,其中激活是指补丁程序文件的检查、解压提取等操作。之后判断每个热补丁函数链表的最高版本:对FuncA2而言,因为存在高版本的FuncA3,不执行FuncA2的替换指令;对FuncB2,当前是最高版本,将FuncB的入口指令由FuncB1的替换指令修改为FuncB2的替换指令;对FuncC2而言,因为是首次补丁FuncC,直接将FuncC的入口指令替换为FuncC2的替换指令;此时对每个被补丁函数,当前生效的都是最高版本热补丁中的替换函数。
本发明实施例提供的热补丁管理方法,构建热补丁函数链表,按热补丁版本顺序存储热补丁的替换指令到热补丁函数链表对应的热补丁函数节点中,并将被补丁函数节点修改为最高热补丁函数版本的替换指令,使得以任意顺序安装补丁时仍然保证生效最新版本热补丁,提高了热补丁安装效率。
在上述各实施例的基础上,进一步地,该方法还包括:
接收热补丁卸载指令,获取所述卸载指令对应的卸载版本号;
在存储的所有热补丁函数链表中查找最高热补丁版本对应的热补丁节点,确定所述热补丁节点对应的最高热补丁版本号;
若所述最高热补丁版本号与所述卸载版本号相同,则获取热补丁版本号低于所述最高热补丁版本的次高热补丁版本对应的替换指令,将所述热补丁节点对应的被补丁函数节点中的的入口指令修改为所述次高热补丁版本对应的替换指令,并删除所述热补丁节点。
具体地,现有技术中若最新版本的补丁存在漏洞,由于升级控制端失效所有旧补丁,将无法退回至次新版本,为了解决这一问题,本发明实施例在接收到热补丁卸载指令后,获取卸载指令对应的卸载版本号,然后在存储的所有热补丁函数链表中查找最高热补丁版本对应的热补丁节点。
如果最高热补丁版本号与卸载版本号相同,表明当前卸载的是最高版本热补丁,则获取热补丁版本号低于最高热补丁版本的次高热补丁版本对应的替换指令,将热补丁节点对应的被补丁函数节点中的的入口指令修改为次高热补丁版本对应的替换指令,并删除最高版本号对应的热补丁节点。
如果最高热补丁版本号大于卸载版本号,表明当前卸载的不是最高版本热补丁,则直接删除卸载版本号对应的热补丁节点。
如果不存在次高版本的热补丁节点,即当前热补丁函数链表中只有一个最高版本的热补丁节点,则将被热补丁节点对应的补丁函数节点中的的入口指令修改为原始入口指令,并删除最高热补丁版本对应的热补丁节点,之后从被补丁函数链表中删除该热补丁节点的链表头对应的被补丁函数节点。
例如,当前被补丁模块已经安装了补丁1、补丁2、补丁3,此时需要卸载、解激活补丁2。对已安装的补丁,对所有被补丁版本,构建数据节点保存在一个链表上,数据节点保存被替换的指令;对待卸载的补丁,根据版本高低进行解激活:
针对FuncA2而言,因为存在高版本的FuncA3,不执行替换指令;
针对FuncB2而言,当前是最高版本补丁函数,查找次高版本的补丁函数FuncB1,将FuncB的入口指令替换为FuncB1的替换指令;
针对FuncC2而言,当前是最高版本补丁函数,未查找到次新版本的补丁函数,将FuncC的入口指令恢复为FuncC的原始指令;
对待卸载的补丁,对所有补丁函数和被补丁函数,处理数据节点和链表;对FuncA2、FuncB2,从被补丁函数FuncA、FuncB的链表中摘除并释放;对FuncC2,从被补丁函数FuncC的链表中摘除并释放,因为FuncC此时已不存在补丁函数,同时将FuncC摘除链表并释放;此时对每个被补丁函数,当前生效的都是最高版本补丁中的替换函数。
本发明实施例提供的热补丁管理方法,构建热补丁函数链表,按热补丁版本顺序存储热补丁的替换指令到热补丁函数链表对应的热补丁函数节点中,并将被补丁函数节点修改为最高热补丁函数版本的替换指令,使得以任意顺序安装卸载补丁时仍然保证生效最新版本热补丁,提高了热补丁安装卸载效率。
基于同一发明构思,本发明实施例还提供一种一种热补丁管理装置,如图4所示,包括:安装模块41、预处理模块42、查找模块43、构建模块44、获取模块45和替换模块46;其中:
安装模块41用于接收热补丁安装指令,获取所述安装指令对应的热补丁信息;预处理模块42用于确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;查找模块43用于在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;构建模块44用于根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;获取模块45用于获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;替换模块46用于将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
如上述装置,可选地,所述构建模块44还用于:
若存储的被补丁函数链表中未查找到所述被补丁函数对应的被补丁函数节点,则在所述被补丁函数链表中构建所述被补丁函数对应的被补丁函数节点,在所述被补丁函数节点中存储所述被补丁函数的原始入口指令;
以所述被补丁函数节点为链表头,构建热补丁函数链表,按照所述安装版本号在所述热补丁函数链表中构建热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;
相应地,所述替换模块46还用于:
将所述被补丁函数节点中的原始入口指令修改为所述热补丁信息对应的替换指令。
如上述装置,可选地,还包括:
卸载模块,用于接收热补丁卸载指令,获取所述卸载指令对应的卸载版本号;
最高版本确定模块,用于在存储的所有热补丁函数链表中查找最高热补丁版本对应的热补丁节点,确定所述热补丁节点对应的最高热补丁版本号;
处理模块,用于若所述最高热补丁版本号与所述卸载版本号相同,则获取热补丁版本号低于所述最高热补丁版本的次高热补丁版本对应的替换指令,将所述热补丁节点对应的被补丁函数节点中的的入口指令修改为所述次高热补丁版本对应的替换指令,并删除所述热补丁节点。
如上述装置,可选地,所述处理模块还用于:
若无所述次高热补丁版本对应的热补丁节点,则将所述热补丁节点对应的被补丁函数节点中的的入口指令修改为原始入口指令,并删除所述最高热补丁版本对应的热补丁节点和所述被补丁函数节点。
如上述装置,可选地,所述处理模块还用于:
若所述最高热补丁版本号大于所述卸载版本号,则直接删除所述卸载版本号对应的热补丁节点。
本发明实施例提供的装置,用于实现上述方法,其功能具体参照上述方法实施例,此处不再赘述。
图5为本发明实施例提供的电子设备的结构示意图,如图5所示,所述设备包括:处理器(processor)51、存储器(memory)52和总线53;
其中,处理器51和存储器52通过所述总线53完成相互间的通信;
处理器51用于调用存储器52中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:接收热补丁安装指令,获取所述安装指令对应的热补丁信息;确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收热补丁安装指令,获取所述安装指令对应的热补丁信息;确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收热补丁安装指令,获取所述安装指令对应的热补丁信息;确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的各实施例技术方案的范围。
Claims (12)
1.一种热补丁管理方法,其特征在于,包括:
接收热补丁安装指令,获取所述安装指令对应的热补丁信息;
确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;
在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;
根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;
获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;
将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
2.根据权利要求1所述的方法,其特征在于,还包括:
若存储的被补丁函数链表中未查找到所述被补丁函数对应的被补丁函数节点,则在所述被补丁函数链表中构建所述被补丁函数对应的被补丁函数节点,在所述被补丁函数节点中存储所述被补丁函数的原始入口指令;
以所述被补丁函数节点为链表头,构建热补丁函数链表,按照所述安装版本号在所述热补丁函数链表中构建热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;
将所述被补丁函数节点中的原始入口指令修改为所述热补丁信息对应的替换指令。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
接收热补丁卸载指令,获取所述卸载指令对应的卸载版本号;
在存储的所有热补丁函数链表中查找最高热补丁版本对应的热补丁节点,确定所述热补丁节点对应的最高热补丁版本号;
若所述最高热补丁版本号与所述卸载版本号相同,则获取热补丁版本号低于所述最高热补丁版本的次高热补丁版本对应的替换指令,将所述热补丁节点对应的被补丁函数节点中的入口指令修改为所述次高热补丁版本对应的替换指令,并删除所述热补丁节点。
4.根据权利要求3所述的方法,其特征在于,还包括:
若无所述次高热补丁版本对应的热补丁节点,则将所述热补丁节点对应的被补丁函数节点中的入口指令修改为原始入口指令,并删除所述最高热补丁版本对应的热补丁节点和所述被补丁函数节点。
5.根据权利要求3所述的方法,其特征在于,还包括:
若所述最高热补丁版本号大于所述卸载版本号,则直接删除所述卸载版本号对应的热补丁节点。
6.一种热补丁管理装置,其特征在于,包括:
安装模块,用于接收热补丁安装指令,获取所述安装指令对应的热补丁信息;
预处理模块,用于确定所述热补丁信息对应的安装版本号、被补丁函数和替换指令;
查找模块,用于在存储的被补丁函数链表中查找到所述被补丁函数对应的被补丁函数节点后,获取以所述被补丁函数节点为链表头的热补丁函数链表;
构建模块,用于根据所述安装版本号按照热补丁版本顺序,在所述热补丁函数链表中构建所述热补丁信息对应的热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;
获取模块,用于获取所述热补丁函数链表中的最高热补丁版本对应的替换指令;
替换模块,用于将所述被补丁函数节点中的入口指令修改为所述最高热补丁版本对应的替换指令。
7.根据权利要求6所述的装置,其特征在于,所述构建模块还用于:
若存储的被补丁函数链表中未查找到所述被补丁函数对应的被补丁函数节点,则在所述被补丁函数链表中构建所述被补丁函数对应的被补丁函数节点,在所述被补丁函数节点中存储所述被补丁函数的原始入口指令;
以所述被补丁函数节点为链表头,构建热补丁函数链表,按照所述安装版本号在所述热补丁函数链表中构建热补丁节点,在所述热补丁节点中保存所述热补丁信息对应的替换指令;
相应地,所述替换模块还用于:
将所述被补丁函数节点中的原始入口指令修改为所述热补丁信息对应的替换指令。
8.根据权利要求6或7所述的装置,其特征在于,还包括:
卸载模块,用于接收热补丁卸载指令,获取所述卸载指令对应的卸载版本号;
最高版本确定模块,用于在存储的所有热补丁函数链表中查找最高热补丁版本对应的热补丁节点,确定所述热补丁节点对应的最高热补丁版本号;
处理模块,用于若所述最高热补丁版本号与所述卸载版本号相同,则获取热补丁版本号低于所述最高热补丁版本的次高热补丁版本对应的替换指令,将所述热补丁节点对应的被补丁函数节点中的入口指令修改为所述次高热补丁版本对应的替换指令,并删除所述热补丁节点。
9.根据权利要求8所述的装置,其特征在于,所述处理模块还用于:
若无所述次高热补丁版本对应的热补丁节点,则将所述被补丁函数节点中的入口指令修改为原始入口指令,并删除所述最高热补丁版本对应的热补丁节点和所述被补丁函数节点。
10.根据权利要求8所述的装置,其特征在于,所述处理模块还用于:
若所述最高热补丁版本号大于所述卸载版本号,则直接删除所述卸载版本号对应的热补丁节点。
11.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至5任一所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010672107.6A CN111949290B (zh) | 2020-07-14 | 2020-07-14 | 一种热补丁管理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010672107.6A CN111949290B (zh) | 2020-07-14 | 2020-07-14 | 一种热补丁管理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111949290A CN111949290A (zh) | 2020-11-17 |
CN111949290B true CN111949290B (zh) | 2022-10-14 |
Family
ID=73340398
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010672107.6A Active CN111949290B (zh) | 2020-07-14 | 2020-07-14 | 一种热补丁管理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949290B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312079A (zh) * | 2020-11-20 | 2021-08-27 | 锐捷网络股份有限公司 | 一种热补丁升级方法、装置、电子设备及存储介质 |
CN113867756A (zh) * | 2021-09-01 | 2021-12-31 | 深圳市华曦达科技股份有限公司 | 软件升级方法、终端设备及可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810006B (zh) * | 2011-02-21 | 2018-07-27 | 北京奇虎科技有限公司 | 补丁包的安装方法及装置 |
US20160328227A1 (en) * | 2014-01-08 | 2016-11-10 | Hewlett Packard Enterprise Development Lp | Dynamically Applying A Software Patch To A Computer Program |
CN105786537A (zh) * | 2014-12-24 | 2016-07-20 | 中兴通讯股份有限公司 | 一种热补丁的实现方法和装置 |
CN105988798B (zh) * | 2015-02-12 | 2020-07-31 | 南京中兴软件有限责任公司 | 补丁处理方法及装置 |
CN106843933A (zh) * | 2016-12-27 | 2017-06-13 | 北京五八信息技术有限公司 | 一种应用程序的漏洞修复方法、移动终端及补丁服务器 |
CN106815049B (zh) * | 2016-12-29 | 2020-01-03 | 杭州迪普科技股份有限公司 | 特征库升级的方法及装置 |
-
2020
- 2020-07-14 CN CN202010672107.6A patent/CN111949290B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111949290A (zh) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111949290B (zh) | 一种热补丁管理方法、装置、电子设备及存储介质 | |
CN110225078B (zh) | 一种应用服务更新方法、系统及终端设备 | |
CN105260209A (zh) | 一种程序热更新解决方法 | |
CN103970564A (zh) | 嵌入式操作系统自动修复升级功能的方法及其系统 | |
CN106775873B (zh) | 更新手机软件、获取补丁文件的方法及设备 | |
CN110597545A (zh) | 一种基于ota组件的热补丁智能升级方法及系统 | |
CN111949292B (zh) | 一种热补丁装载方法、装置、电子设备及存储介质 | |
CN108664255B (zh) | 一种软件升级方法及装置 | |
CN111142922B (zh) | 应用程序更新方法、装置、终端及服务器 | |
CN113703823A (zh) | 一种bmc固件升级方法、装置、电子设备及存储介质 | |
CN113515291A (zh) | 设备在线升级方法和装置 | |
CN106708541A (zh) | 版本升级处理方法及装置 | |
CN116028084A (zh) | 一种基于OpenStack云平台跨版本热升级的方法、系统及终端 | |
JP2014170306A (ja) | 情報処理装置、起動障害からの自動復旧方法、及び起動障害からの自動復旧プログラム | |
CN114116033B (zh) | 一种服务器配置修改方法和装置 | |
CN110659052B (zh) | 网络设备中系统软件的更新方法、系统及可读存储介质 | |
CN112230967A (zh) | 一种基于传统分区的光模块固件可回退在线升级方法 | |
CN112988182A (zh) | Linux内核热补丁实现方法、电子设备及计算机可读介质 | |
CN110543322A (zh) | 一种针对龙芯平台的热补丁方法及装置 | |
CN103684859B (zh) | 一种对网元设备升级的方法和系统 | |
TWI850664B (zh) | 用於核心帳務主機的程式碼輔助管理裝置與方法 | |
CN112416390B (zh) | 更新npm包的方法、装置、电子设备及可读存储介质 | |
CN108196852A (zh) | 一种软件运行方法、更新方法和相关装置 | |
CN111949278B (zh) | 一种自动安装mcs系统的方法、系统、终端及存储介质 | |
CN103106089A (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 |