busybox microcom Segmentation fault

本文记录了在使用 BusyBox 的 microcom 命令时遇到的段错误问题,并提供了修复方案。该问题源于未检查必要参数 TTY 是否存在,导致 bb_basename() 被调用时传入空指针。
/*********************************************************************************
 *                  busybox microcom Segmentation fault
 * 说明:
 *     调试硬件的时候想用microcom来测试一下串口,结果发现段错误,其他busybox命令正常,
 * 觉得有点奇怪,查看microcom的patch之后发现这个问题已经修复了。
 *
 *                                              2017-10-17 深圳 南山平山村 曾剑锋
 ********************************************************************************/

一、参考文档:
    1. [PATCH] miscutils/microcom: Fixed segfault
        http://lists.busybox.net/pipermail/busybox/2017-August/085720.html

二、解决办法:
    microcom did not check if required parameter TTY is present. Thus,
    bb_basename() was called with a NULL pointer if TTY was missing.
    This commit adds the missing check.
    ---
      miscutils/microcom.c | 5 +++++
      1 file changed, 5 insertions(+)
    
    diff --git a/miscutils/microcom.c b/miscutils/microcom.c
    index 14b9f3baf..38f6425c1 100644
    --- a/miscutils/microcom.c
    +++ b/miscutils/microcom.c
    @@ -78,6 +78,11 @@ int microcom_main(int argc UNUSED_PARAM, char **argv)
      //    argc -= optind;
          argv += optind;
      
    +    if (*argv == NULL){
    +        bb_show_usage();
    +        return EXIT_FAILURE;
    +    }
    +
          // try to create lock file in /var/lock
          device_lock_file = (char *)bb_basename(argv[0]);
          device_lock_file = xasprintf("/var/lock/LCK..%s", device_lock_file);

 

转载于:https://www.cnblogs.com/zengjfgit/p/7682351.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值