在src/modules/systemlib/rc_check.c文件中。 修正办法如下,可能发生crash
@@ -140,7 +140,7 @@ int rc_calibration_check(int mavlink_fd) { | | | /* sanity checks pass, enable channel */ | | | if (count) { | | | mavlink_log_critical(mavlink_fd, "ERROR: %d config error(s) for RC channel %d.", count, (i + 1)); | | | - warnx(mavlink_fd, "ERROR: %d config error(s) for RC channel %d.", count, (i + 1)); | | | + warnc(mavlink_fd, "ERROR: %d config error(s) for RC channel %d.", count, (i + 1)); | | | usleep(100000); | | | } |
px4 作者没有include err.h这个头文件 所以编译器只报了函数在使用前没有定义得错误,他们可能忽略了这个参数错误
warnx 要求第一个参数是要打印消息的字符缓冲区,而实际传递得参数是一个int句柄
如果命中这个if 直接导致指针无效而崩溃掉。
已经提交了px4官方。 commit id:db2b85cbd42c17ef581e62c8b2363b6fc37e9617
|