[发明专利]补丁处理的方法和设备以及生成补丁的方法和设备有效
申请号: | 201510934339.3 | 申请日: | 2015-12-15 |
公开(公告)号: | CN105573788B | 公开(公告)日: | 2019-02-26 |
发明(设计)人: | 赵干;谢江帆;周淼苗;庞立祥 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F8/658 | 分类号: | G06F8/658 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 补丁 处理 方法 设备 以及 生成 | ||
本发明实施例公开了一种补丁处理方法。该方法包括:当执行到第一函数中的第一调用指令,跳转到第二函数;当执行到第二函数的第一条指令,跳转到补丁文件的中间代码;按照中间代码的指令,将第一函数的表地址和第一调用指令的返回地址保存到补丁文件的预留空间;当执行到中间代码中的第二调用指令,跳转到补丁文件中用于对第二函数更新的第三函数;当完成第三函数的执行,按照第二调用指令的返回地址,返回中间代码;按照中间代码的指令,从预留空间中恢复第一函数的表地址和第一调用指令的返回地址;按照第一调用指令的返回地址,返回第一函数。此外,本发明实施例中还提供了一种补丁处理的设备以及一种补丁生成的方法和设备。
技术领域
本发明涉及通信技术领域,特别是涉及一种补丁处理的方法和设备以及一种生成补丁文件的方法和设备。
背景技术
目前,为了修复程序漏洞或更新业务功能,各种电子设备可以通过补丁的方式对现有软件进行更新。例如,在各种通信网络中,网络设备通过补丁的方式对现有软件的更新,可以更新自身的通信业务功能。可以理解的是,在许多情况下,软件的更新需要在不中断软件运行的情况下进行。基于此,在线补丁技术应运而生。
在线补丁技术是以函数为单位对软件进行补丁的。图1所示的是一种现有的在线补丁技术。其中,软件中需要更新的原函数是第二函数,软件中第二函数是第一函数的调用对象,而补丁文件中包含有用于更新第二函数的第三函数,即第三函数是补丁函数。对于运行有该软件的设备来说,在利用补丁文件对软件进行补丁之后,当执行第一函数的过程中响应到调用第二函数的指令,第二函数的第一条指令指示该设备跳转去调用补丁文件中的第三函数,当执行完第三函数之后再返回到第一函数执行后续指令。可见,在设备运行软件的过程中,第三函数的执行替代了第二函数的执行,软件的更新得以实现。
需要说明的是,在线补丁技术通常应用于软件运行不能中断的场景中。例如,对于通信网络的网络设备来说,其通信业务需要由运行中的软件承载,而网络设备的通信业务是不能中断的,因此,网络设备的软件更新需要采用在线补丁技术。但是,发明人经过研究发现,采用现有的在线补丁技术对软件进行补丁更新之后,软件的运行却常常因异常、错误或故障而被中断。
发明内容
本发明实施例所要解决的技术问题是,提供一种补丁处理的方法和设备以及一种生成补丁文件的方法和设备,以解决现有技术中在在线补丁完成之后软件的运行容易发生中断的技术问题。
第一方面,本发明实施例提供了一种补丁处理方法,所述方法包括:
响应于执行到第一函数中的第一调用指令,跳转到第二函数;
响应于执行到所述第二函数的第一条指令,跳转到补丁文件的中间代码;
按照所述中间代码的指令,将所述第一函数的表地址和所述第一调用指令的返回地址保存到所述补丁文件的预留空间,所述第一函数的表地址为所述第一函数的表结构的地址,所述第一函数的表结构用于记录所述第一函数的调用对象的地址;
响应于执行到所述中间代码中的第二调用指令,跳转到所述补丁文件的第三函数,所述第三函数用于对所述第二函数进行更新;
响应于完成所述第三函数的执行,按照所述第二调用指令的返回地址,返回所述中间代码;
按照所述中间代码的指令,从所述预留空间中恢复所述第一函数的表地址和所述第一调用指令的返回地址;
按照所述第一调用指令的返回地址,返回所述第一函数。
可选的,所述方法还包括:
获取所述补丁文件,并按照所述补丁文件获取所述第二函数的地址;
根据所述第二函数的地址,在所述第二函数中添加用于跳转到所述中间代码的指令,作为所述第二函数的第一条指令。
可选的,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510934339.3/2.html,转载请声明来源钻瓜专利网。