tencentcloud / tencentcloud-iot-sdk-embedded-c Goto Github PK
View Code? Open in Web Editor NEWSDK for connecting to Tencent Cloud IoT from a device using embedded C.
Home Page: https://cloud.tencent.com/product/iothub
License: Other
SDK for connecting to Tencent Cloud IoT from a device using embedded C.
Home Page: https://cloud.tencent.com/product/iothub
License: Other
https://github.com/nickfox-taterli/esp8266_qcloud
MQTT例子完全OK,稳定,跑了2天了.但是shadow'例子各种出问题.
日志如下:
INF|1970-01-01 00:00:21|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:22|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:24|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:24|main.c|on_temperature_actuate_callback(178): actuate callback jsonString={"temperatureDesire":10}|dataLen=24
INF|1970-01-01 00:00:24|main.c|on_temperature_actuate_callback(181): modify desire temperature to:
INF|1970-01-01 00:00:25|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:26|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:27|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:28|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:30|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:31|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:32|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:33|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:34|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:36|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:36|main.c|on_request_handler(115): Method=GET|Ack=ACK_TIMEOUT
INF|1970-01-01 00:00:36|main.c|on_request_handler(116): received jsonString={"payload":{"metadata":{"temperatureDesire":{"timestamp":1554183524446}},"state":{"temperatureDesire":10},"timestamp":1554183524446,"version":39},"timestamp":1554183524446,"typ
INF|1970-01-01 00:00:37|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:38|main.c|mqtt_loop(383): Wait for Shadow Get Result
INF|1970-01-01 00:00:39|main.c|mqtt_loop(383): Wait for Shadow Get Result
按readme 配置后运行报错
非对称加密
DBG|2018-04-08 13:39:14|HAL_TLS_mbedtls.c|HAL_TLS_Connect(203): Connecting to /iotcloud-mqtt.gz.tencentdevices.com/8883...
DBG|2018-04-08 13:39:20|HAL_TLS_mbedtls.c|HAL_TLS_Connect(208): Setting up the SSL/TLS structure...
DBG|2018-04-08 13:39:20|HAL_TLS_mbedtls.c|HAL_TLS_Connect(250): Performing the SSL/TLS handshake...
ERR|2018-04-08 13:39:20|mqtt_client.c|IOT_MQTT_Construct(90): mqtt connect with id: EmHEy failed: -111
ERR|2018-04-08 13:39:20|mqtt_sample.c|main(256): Cloud Device Construct Failed
请问错误码在哪查询?
对称加密
DBG|2018-04-08 14:21:20|mqtt_client.c|qcloud_iot_mqtt_init(178): device_name: switch01
DBG|2018-04-08 14:21:20|mqtt_client.c|qcloud_iot_mqtt_init(251): cert file: k1CIyegaDZBDGbU9mbiQyw==
段错误 (核心已转储)
src/utils/farra/utils_httpc.c中368行
*p_read_len = 0;
rc = client->network_stack.read(&client->network_stack, (unsigned char *)buf, max_len, (uint32_t)left_ms(&timer), (size_t *)p_read_len);
在64位系统中size_t和int长度可能不一样,这样强转会导致p_read_len指向地址附近的内存会被异常覆盖。
src/mqtt/src/mqtt_client_connect.c中187行
if ((flags & MQTT_CONNECT_FLAG_USERNAME) && options->username != NULL) {
mqtt_write_utf8_string(&ptr, options->username);
HAL_Free(options->username);
}
if ((flags & MQTT_CONNECT_FLAG_PASSWORD) && options->password != NULL) {
mqtt_write_utf8_string(&ptr, options->password);
HAL_Free(options->password);
}
HAL_Free后建议将指针置为NULL,否则mqtt重连的时候程序会挂掉
at_client.c 840行创建线程的handle是局部变量,在HAL_OS_freertos.c 中 创建完线程回调_HAL_thread_func_wrapper_ 传入的参数是线程的handle,创建线程函数已经退出,handle里内容已经被释放,_HAL_thread_func_wrapper_的params->thread_func 函数指针会变为0或者野指针,导致系统宕机。
萌新在vs code上发现一个插件Code Spell Checker,很好用,于是忍不住检索了一下你们的两万行代码,挑出一些可能拼写错误的单词:
SUBCRIBE
UNSUBCRIBE
unsubcribed
writter
paload
desried
propertys
Shdaow
DEIRECT
recgonized
unrecogonized
NORMANL
发布版本已经是3.2.3但是这里没有同步更新
/* IoT C-SDK version info */
#define QCLOUD_IOT_DEVICE_SDK_VERSION "3.2.2"
环境:
$ gcc --version
gcc (GCC) 10.2.0
Copyright (c) 2020 Free Software Foundation, Inc.
$ cat /proc/version
CYGWIN_NT-10.0-17763 version 3.2.0-340.x86_64 (corinna@calimero) (gcc version 9.3.0 20200312 (Fedora Cygwin 9.3.0-1) (GCC) ) 2021-03-29 08:42 UTC
建议修改如下
#ifdef PATH_MAX
#undef PATH_MAX
#endif
INF|2020-06-11 16:18:02|qcloud_iot_device.c|iot_device_info_set(50): SDK_Ver: 3.2.0, Product_ID: PRODUCT_ID, Device_Name: YOUR_DEV_NAME
DBG|2020-06-11 16:18:02|mqtt_client.c|qcloud_iot_mqtt_init(426): cert file: /home/xx/work/qcloud-iot-sdk-embedded-c/output/release/bin/certs/client.pem
DBG|2020-06-11 16:18:02|mqtt_client.c|qcloud_iot_mqtt_init(427): key file: /home/xx/work/qcloud-iot-sdk-embedded-c/output/release/bin/certs/client.key
DBG|2020-06-11 16:18:02|HAL_TLS_mbedtls.c|HAL_TLS_Connect(212): Setting up the SSL/TLS structure...
DBG|2020-06-11 16:18:02|HAL_TLS_mbedtls.c|HAL_TLS_Connect(256): Performing the SSL/TLS handshake...
DBG|2020-06-11 16:18:02|HAL_TLS_mbedtls.c|HAL_TLS_Connect(257): Connecting to /10.1.8.142/8883...
INF|2020-06-11 16:18:02|HAL_TLS_mbedtls.c|_dtls_debug(199): [mbedTLS]:[/home/xx/work/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/library/ssl_tls.c]:[4454]: x509_verify_cert() returned 4 (-0xfffffffc)
ERR|2020-06-11 16:18:02|HAL_TLS_mbedtls.c|HAL_TLS_Connect(264): mbedtls_ssl_handshake failed returned 0x0004
DBG|2020-06-11 16:18:02|HAL_TLS_mbedtls.c|HAL_TLS_Disconnect(291): handle is NULL
ERR|2020-06-11 16:18:02|mqtt_client.c|IOT_MQTT_Construct(108): mqtt connect with id: failed: -1001
INF|2020-06-11 16:18:02|mqtt_client.c|qcloud_iot_mqtt_fini(532): release mqtt client resources
ERR|2020-06-11 16:18:02|mqtt_sample.c|main(309): MQTT Construct failed!
设备启动后,执行一次IOT_MQTT_Construct和IOT_MQTT_Destroy后,再次执行IOT_MQTT_Construct会导致qcloud_get_log_level返回错误,定位时发现IOT_MQTT_Destroy动作未将sg_log_sub_ok复位,希望SDK开发人员帮忙确认是否有必要在Destroy Client后加一个复位动作,如果有必要,希望排查一下这种情况的其他全局变量(如:sg_client_token、sg_devinfo_initialized等)。
samples/mqtt/multi_thread_mqtt_sample.c,ota_mqtt_sample.c存在内存UAF (memory Use-After-Free) 安全问题(即使用了一个已经释放的内存)。
multi_client_shadow_sample.c, ota_mqtt_sample.c存在DF(memory Double Free)安全问题(即对内存进行双重释放)。
static void _mqtt_message_handler(void *pClient, MQTTMessage *message, void *userData)
{
if (message == NULL) {
return;
}
if (MAX_SIZE_OF_TOPIC_CONTENT >= message->payload_len) {
...
if (action_value != NULL) {
temp = strstr(action_value, "-");
if (NULL != temp) {
tempRow = atoi(temp + 1);
HAL_Free(action_value);
} else {
HAL_Free(action_value); //!!! action_value memory is released
Log_e("invalid action value: %s", action_value); //!!! Use of memory action_value after it is freed
sg_rx_unexpected_count++;
return;
}
} else {
...
}
...
} else {
sg_rx_msg_buf_too_big_count++;
}
}
static void _shadow_client_thread_runner(void *ptr)
{
int rc = QCLOUD_ERR_FAILURE;
void *shadow_client = NULL;
...
shadow_client = IOT_Shadow_Construct(&init_params);
if (shadow_client == NULL) {
Log_e("shadow client constructed failed.");
goto thread_exit;
}
// register delta property
shadow_property.key = thread_data->property_key;
shadow_property.data = ¤t_update_count;
shadow_property.type = JINT32;
rc = IOT_Shadow_Register_Property(shadow_client, &shadow_property, OnDeltaCallback);
if (rc != QCLOUD_RET_SUCCESS) {
rc = IOT_Shadow_Destroy(shadow_client); //!!! shadow_client memory was freed via IOT_Shadow_Destroy
Log_e("register device shadow property failed, err: %d", rc);
goto thread_exit;
}
...
thread_exit:
if (shadow_client != NULL) {
IOT_Shadow_Destroy(shadow_client); //!!! shadow_client memory was freed via IOT_Shadow_Destroy again since it was freed before.
shadow_client = NULL;
}
sg_thread_status[thread_id] = 1;
}
static int _get_local_fw_info(char *file_name, char *local_version)
{
...
char *version = LITE_json_value_of(KEY_VER, json_doc);
char *size = LITE_json_value_of(KEY_SIZE, json_doc);
if ((NULL == version) || (NULL == size)) {
if (version)
HAL_Free(version);
if (size)
HAL_Free(size);
fclose(fp);
return 0;
}
int local_size = atoi(size);
HAL_Free(size);
if (local_size <= 0) {
Log_w("local info offset invalid: %d", local_size);
HAL_Free(version); //!!! version memory is released
local_size = 0;
}
strncpy(local_version, version, FW_VERSION_MAX_LEN); //!!! Use of memory version after it is freed
HAL_Free(version); //!!! Double Free issues.
fclose(fp);
return local_size;
}
当sub返回正数(paket-id),消息回调挂接handles满了之后,希望返回特定错误码用于标识该特定的错误原因。eg:某场景下,设备主程序Yield循环期间,无法感知该错误类型,sub返回正数paket-id后,Yield不会触发sub handle回调函数,而仅仅返回-1001失败,设备开发人员无法知道是否该将该sub的主题放入自己的订阅list表中。
编译没有错误,能正常运行,同样配置直接在ubuntu下编译后能正常连接到服务器
root@KtGw:/tmp/release/bin# ./mqtt_sample
INF|2018-09-14 05:26:35|device.c|iot_device_info_init(37): device info init success!
INF|2018-09-14 05:26:35|device.c|iot_device_info_set(42): start to set device info!
INF|2018-09-14 05:26:35|device.c|iot_device_info_set(66): device info set successfully!
FUNC_ENTRY: qcloud_iot_mqtt_init L#180
DBG|2018-09-14 05:26:35|mqtt_client.c|qcloud_iot_mqtt_init(185): product_id: YEHOII6XCA
DBG|2018-09-14 05:26:35|mqtt_client.c|qcloud_iot_mqtt_init(186): device_name: VDEV0914
DBG|2018-09-14 05:26:35|mqtt_client.c|qcloud_iot_mqtt_init(259): cert file: /tmp/release/bin/certs/VDEV0914_cert.crt
DBG|2018-09-14 05:26:35|mqtt_client.c|qcloud_iot_mqtt_init(260): key file: /tmp/release/bin/certs/VDEV0914_private.key
FUNC_EXIT: qcloud_iot_mqtt_init L#303 Return Code : 0
FUNC_ENTRY: qcloud_iot_mqtt_connect L#389
FUNC_ENTRY: get_client_conn_state L#1308
FUNC_EXIT: get_client_conn_state L#1313 Return Code : 0
FUNC_ENTRY: _mqtt_connect L#325
DBG|2018-09-14 05:26:35|HAL_TLS_mbedtls.c|HAL_TLS_Connect(204): Connecting to /YEHOII6XCA.iotcloud.tencentdevices.com/8883...
DBG|2018-09-14 05:26:35|HAL_TLS_mbedtls.c|HAL_TLS_Connect(209): Setting up the SSL/TLS structure...
DBG|2018-09-14 05:26:35|HAL_TLS_mbedtls.c|HAL_TLS_Connect(251): Performing the SSL/TLS handshake...
FUNC_ENTRY: _serialize_connect_packet L#134
FUNC_ENTRY: mqtt_write_packet_rem_len L#96
FUNC_EXIT: mqtt_write_packet_rem_len L#111 Return Code : 1
FUNC_EXIT: _serialize_connect_packet L#235 Return Code : 0
FUNC_ENTRY: send_mqtt_packet L#511
FUNC_EXIT: send_mqtt_packet L#535 Return Code : 0
FUNC_ENTRY: wait_for_read L#1277
FUNC_ENTRY: cycle_for_read L#1222
FUNC_ENTRY: _read_mqtt_packet L#599
FUNC_EXIT: _read_mqtt_packet L#613 Return Code : -109
FUNC_EXIT: cycle_for_read L#1232 Return Code : 0
FUNC_EXIT: wait_for_read L#1298 Return Code : -111
FUNC_EXIT: _mqtt_connect L#364 Return Code : -111
FUNC_EXIT: qcloud_iot_mqtt_connect L#406 Return Code : -111
ERR|2018-09-14 05:26:40|mqtt_client.c|IOT_MQTT_Construct(102): mqtt connect with id: qU9fl failed: -111
ERR|2018-09-14 05:26:40|mqtt_sample.c|main(245): Cloud Device Construct Failed
其中make.settings如下配置
BUILD_TYPE = debug #release/debug
#PLATFORM_CC = gcc
#PLATFORM_AR = ar
PLATFORM_OS = linux
PLATFORM_SSL = mbedtls
PLATFORM_CC = /opt/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-gcc
PLATFORM_AR = /opt/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-ar
#/home/flym/ktgw/OpenWrt-SDK/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin
#/opt/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin
FEATURE_MQTT_COMM_ENABLED = y # 是否打开MQTT通道的总开关
FEATURE_MQTT_DEVICE_SHADOW = n # 是否打开设备影子的总开关
FEATURE_COAP_COMM_ENABLED = n # 是否打开CoAP通道的总开关
FEATURE_NBIOT_COMM_ENABLED = n # 是否打开NBIoT通道的消息组装
FEATURE_OTA_COMM_ENABLED = n # 是否打开OTA固件升级总开关
FEATURE_OTA_SIGNAL_CHANNEL = MQTT # OTA信令通道类型:MQTT/COAP
FEATURE_AUTH_MODE = CERT # MQTT/CoAP接入认证方式,使用证书认证:CERT;使用密钥认证:KEY
FEATURE_AUTH_WITH_NOTLS = n # 接入认证是否不使用TLS,证书方式必须选择使用TLS,密钥认证可选择不使用TLS
FEATURE_SYSTEM_COMM_ENABLED = y # 是否打开获取iot后台时间功能
[zcprotocol_best-t:2023-07-25T14:54:57.559] Info [QCloudThread(4121592944)][mqttcommapi.c log_handler 478]: ERR|2023-07-25 14:54:57|HAL_TLS_mbedtls.c|HAL_TLS_Read(378): cloud_iot_network_tls_read failed: 0x0000
[zcprotocol_best-t:2023-07-25T14:54:57.559] Info [QCloudThread(4121592944)][mqttcommapi.c log_handler 478]: ERR|2023-07-25 14:54:57|mqtt_client_yield.c|qcloud_iot_mqtt_yield(246): network read failed, rc: -708. MQTT Disconnect.
[zcprotocol_best-t:2023-07-25T14:54:57.560] Info [QCloudThread(4121592944)][mqttcommapi.c log_handler 478]: ERR|2023-07-25 14:54:57|mqtt_client_yield.c|_handle_disconnect(68): disconnect MQTT for some reasons..
[zcprotocol_best-t:2023-07-25T14:54:57.560] Info [QCloudThread(4121592944)][mqttcommapi.c event_handler 495]: MQTT disconnect.
[zcprotocol_best-t:2023-07-25T14:54:57.560] Warning [QCloudThread(4121592944)][mqttcommapi.c ReadChannelThread 878]: It will attempting reconnect: -105
[zcprotocol_best-t:2023-07-25T14:54:58.564] Warning [QCloudThread(4121592944)][mqttcommapi.c ReadChannelThread 774]: into disconnect status, 0,1
[zcprotocol_best-t:2023-07-25T14:54:58.566] Info [QCloudThread(4121592944)][mqttcommapi.c log_handler 478]: ERR|2023-07-25 14:54:58|device.c|iot_device_info_init(30): device info has been initialized.
FUNC: qcloud_iot_mqtt_init L#259 server iotcloud-mqtt.gz.tencentdevices.com:8883
[zcprotocol_best-t:2023-07-25T14:54:58.712] Info [QCloudThread(4121592944)][mqttcommapi.c log_handler 478]: ERR|2023-07-25 14:54:58|mqtt_client.c|IOT_MQTT_Construct(111): mqtt connect with id: dDm1s failed: -117
[ 55%] Building C object sdk_src/CMakeFiles/iot_sdk.dir/network/socket/network_socket.c.o
[ 56%] Building C object sdk_src/CMakeFiles/iot_sdk.dir/network/network_interface.c.o
[ 57%] Linking C static library ../../output/release/lib/libiot_sdk.a
[ 57%] Built target iot_sdk
Scanning dependencies of target iot_platform
[ 59%] Building C object platform/CMakeFiles/iot_platform.dir/os/linux/HAL_Device_linux.c.o
[ 60%] Building C object platform/CMakeFiles/iot_platform.dir/os/linux/HAL_File_linux.c.o
[ 61%] Building C object platform/CMakeFiles/iot_platform.dir/os/linux/HAL_Log_linux.c.o
[ 62%] Building C object platform/CMakeFiles/iot_platform.dir/os/linux/HAL_OS_linux.c.o
[ 63%] Building C object platform/CMakeFiles/iot_platform.dir/os/linux/HAL_TCP_linux.c.o
[ 64%] Building C object platform/CMakeFiles/iot_platform.dir/os/linux/HAL_Timer_linux.c.o
In file included from /home/xie/mywork/cj/tencentcloud-iot-explorer-sdk-embedded-c-3.2.2/platform/os/linux/HAL_Timer_linux.c:26:0:
/home/xie/mywork/cj/tencentcloud-iot-explorer-sdk-embedded-c-3.2.2/platform/os/linux/HAL_Timer_linux.c: In function 'HAL_Timer_expired':
/home/xie/mywork/cj/tencentcloud-iot-explorer-sdk-embedded-c-3.2.2/platform/os/linux/HAL_Timer_linux.c:35:5: error: request for member 'tv_sec' in something not a structure or union
timersub(&timer->end_time, &now, &res);
^
/home/xie/mywork/cj/tencentcloud-iot-explorer-sdk-embedded-c-3.2.2/platform/os/linux/HAL_Timer_linux.c:35:5: error: request for member 'tv_usec' in something not a structure or union
timersub(&timer->end_time, &now, &res);
^
/home/xie/mywork/cj/tencentcloud-iot-explorer-sdk-embedded-c-3.2.2/platform/os/linux/HAL_Timer_linux.c: In function 'HAL_Timer_countdown_ms':
/home/xie/mywork/cj/tencentcloud-iot-explorer-sdk-embedded-c-3.2.2/platform/os/linux/HAL_Timer_linux.c:44:5: error: request for member 'tv_sec' in something not a structure or union
timeradd(&now, &interval, &timer->end_time);
^
/home/xie/mywork/cj/tencentcloud-iot-explorer-sdk-embedded-c-3.2.2/platform/os/linux/HAL_Timer_linux.c:44:5: error: request for member 'tv_usec' in something not a structure or union
timeradd(&now, &interval, &timer->end_time);
^
/home/xie/mywork/cj/tencentcloud-iot-explorer-sdk-embedded-c-3.2.2/platform/os/linux/HAL_Timer_linux.c:44:5: error: request for member 'tv_usec' in something not a structure or union
timeradd(&now, &interval, &timer->end_time);
^
/home/xie/mywork/cj/tencentcloud-iot-explorer-sdk-embedded-c-3.2.2/platform/os/linux/HAL_Timer_linux.c:44:5: error: request for member 'tv_sec' in something not a structure or union
timeradd(&now, &interval, &timer->end_time);
移植太麻烦了,还必须要支持TSL?
阿里云一天就接入成功了。
如果_at_socket_find 获取返回为NULL,执行“pAtSocket->state = eSOCKET_CLOSED; ”,访问0地址会宕机。
现在的方式是直接在 CMastLists.txt
里 set(BUILD_TYPE "release")
,如果我想写一个脚本编译,无法通过命令行重新设置变量,除非直接修改 CMastLists.txt
中变量的值,是否考虑使用缓存变量?
qcloud-iot-sdk-embedded-c$ ./cmake_build.sh
Build all (SDK libs and samples)
-- The C compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/john/qcloud-iot-sdk-embedded-c/build
[ 1%] Building C object sdk_src/CMakeFiles/iot_sdk.dir/utils/json_parser.c.o
..........
[ 80%] Building C object external_libs/mbedtls/CMakeFiles/mbedtls.dir/library/ss l_tls.c.o
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c:1012:67: error: argument 2 of type ‘unsigned char[36]’ with mismatch ed bound [-Werror=array-parameter=]
1012 | ssl_calc_verify_tls( mbedtls_ssl_context *ssl, unsigned char hash[36] )
| ~~~~~~~~~~~~~~^~~~~~~~
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c:466:57: note: previously declared as ‘unsigned char *’
466 | static void ssl_calc_verify_tls( mbedtls_ssl_context *, unsigned char * );
| ^~~~~~~~~~~~~~~
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c:1040:74: error: argument 2 of type ‘unsigned char[32]’ with mismatch ed bound [-Werror=array-parameter=]
1040 | c_verify_tls_sha256( mbedtls_ssl_context *ssl, unsigned char hash[32] )
| ~~~~~~~~~~~~~~^~~~~~~~
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c:473:63: note: previously declared as ‘unsigned char *’
473 | atic void ssl_calc_verify_tls_sha256( mbedtls_ssl_context *,unsigned cha r * );
| ^~~~~~~~~~~~ ~~~
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c:1061:74: error: argument 2 of type ‘unsigned char[48]’ with mismatch ed bound [-Werror=array-parameter=]
1061 | c_verify_tls_sha384( mbedtls_ssl_context *ssl, unsigned char hash[48] )
| ~~~~~~~~~~~~~~^~~~~~~~
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c:479:64: note: previously declared as ‘unsigned char *’
479 | tic void ssl_calc_verify_tls_sha384( mbedtls_ssl_context *, unsigned cha r * );
| ^~~~~~~~~~~~ ~~~
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c: In function ‘ssl_calc_finished_tls_sha384’:
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c:4924:5: error: ‘mbedtls_sha512_finish’ accessing 64 bytes in a regio n of size 48 [-Werror=stringop-overflow=]
4924 | mbedtls_sha512_finish( &sha512, padbuf );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c:4924:5: note: referencing argument 2 of type ‘unsigned char *’
In file included from /home/john/qcloud-iot-sdk-embedded-c/extern al_libs/mbedtls/include/mbedtls/ssl_internal.h:41,
from /home/john/qcloud-iot-sdk-embedded-c/extern al_libs/mbedtls/library/ssl_tls.c:48:
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/includ e/mbedtls/sha512.h:102:6: note: in a call to function ‘mbedtls_sha512_finish’
102 | void mbedtls_sha512_finish( mbedtls_sha512_context *ctx, unsigned char o utput[64] );
| ^~~~~~~~~~~~~~~~~~~~~
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c: In function ‘ssl_calc_verify_tls_sha384’:
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c:1070:5: error: ‘mbedtls_sha512_finish’ accessing 64 bytes in a regio n of size 48 [-Werror=stringop-overflow=]
1070 | mbedtls_sha512_finish( &sha512, hash );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/librar y/ssl_tls.c:1070:5: note: referencing argument 2 of type ‘unsigned char *’
In file included from /home/john/qcloud-iot-sdk-embedded-c/extern al_libs/mbedtls/include/mbedtls/ssl_internal.h:41,
from /home/john/qcloud-iot-sdk-embedded-c/extern al_libs/mbedtls/library/ssl_tls.c:48:
/home/john/qcloud-iot-sdk-embedded-c/external_libs/mbedtls/includ e/mbedtls/sha512.h:102:6: note: in a call to function ‘mbedtls_sha512_finish’
102 | void mbedtls_sha512_finish( mbedtls_sha512_context *ctx, unsigned char o utput[64] );
| ^~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [external_libs/mbedtls/CMakeFiles/mbedtls.dir/build.make:188:exter nal_libs/mbedtls/CMakeFiles/mbedtls.dir/library/ssl_tls.c.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:289:external_libs/mbedtls/CMakeFiles/mbedtls .dir/all] 错误 2
make: *** [Makefile:91:all] 错误 2
“物联网开发平台控制台" 连接打不开
ESP32有支持了吗
文档里面只是介绍了SDK的代码结构,但是对于移植的具体操作没有说明啊,有没有具体的操作实例?
怎么设置编译参数,怎么选择编译平台等等。
乐鑫SDK版本是v3.3(b74255d)
以下是调试信息:
INF|1970-01-01 00:00:06|qcloud_iot_device.c|iot_device_info_set(65): SDK_Ver: 3.1.3, Product_ID: R0UVGK0FR9, Device_Name: DEV000000000001
ERR|1970-01-01 00:00:06|HAL_TLS_mbedtls.c|HAL_TLS_Connect(256): mbedtls_ssl_handshake failed returned 0x7780(�s)
ERR|1970-01-01 00:00:06|mqtt_client.c|IOT_MQTT_Construct(121): mqtt connect with id: failed: -1001
INF|1970-01-01 00:00:06|mqtt_client.c|qcloud_iot_mqtt_fini(442): release mqtt client resources
希望README文档可以完善一点,增加常用平台编译和修改的步骤。
mqtt/src/mqtt_client.c qcloud_iot_mqtt_init函数291、292行,这里在PSK密钥协商的场景下,也要设置CA证书信息么?
有WillOptions的结构体.但是没有找到设置的地方
目前的GatewayParam结构体中只支持单个子设备名称,请提供多个子设备上线的接口。
如修改GatewayParam中char *subdev_device_name为char *subdev_device_name[],并在内部实现中新增相关代码。
当前SDK中充斥着大量的不安全函数,例如sprintf之类的,应替换为snprintf的安全版本
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.