mqtt开启ssl后发送AT指令程序crash reset定位分析

在展锐8910DM模组固件的MQTTS功能开发中,遇到开启SSL后程序crash和reset的问题。通过日志和dump文件分析,发现mbedtls_entropy_init异常,实则在mbed_x509_crt_parse处因空指针调用strlen导致。解决方案包括配置完整证书链和增加空指针判断。最终修复了问题,强调strlen()不应传入NULL。
摘要由CSDN通过智能技术生成

1、背景


展锐8910dm 模组固件只有MQTT功能的AT指令集,需要开发MQTTS的功能。但是在开发过程中遇到程序crash和reset问题,需要排查并解决。

2、定位分析


代码在这里开启ssl。

        if (g_mqtt_ssl_enable_flag == true) {
 
            sprintf(cUrl, "ssl://%s:%s", g_stMqttOpts.m_pcHost, g_stMqttOpts.m_pcPort);
 
        }
 
        else {
 
            sprintf(cUrl, "%s:%s", g_stMqttOpts.m_pcHost, g_stMqttOpts.m_pcPort);
 
        }
 
 
 
    if (g_mqtt_ssl_enable_flag == true) {
 
        MQTTAsync_SSLOptions ssl_opts = MQTTAsync_SSLOptions_initializer;
 
 
 
        bool ret = 0;
 
        ret = mqtts_setCrt(CG_MQTTS_CA_CRT, &mqtts_ca_cert);
 
        if (ret == true && mqtts_ca_cert) {
 
            mqtts_setCrt(CG_MQTTS_CLIENT_CRT, &mqtts_client_cert);
 
            mqtts_setCrt(CG_MQTTS_CLIENT_PRIVATE_KEY, &mqtts_client_key);
 
        }
 
        else {
 
            OSI_LOGI(0, "[MQTT
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值