Closed AD0naldRavenclow closed 1 year ago
[
在ai_reloc_network.c中ai_reloc_rt_mcu_checking函数中的指针变量bin访问在空指针判断之前进行,存在可能的空指针引用,进而引起程序异常退出。
int ai_reloc_rt_mcu_checking(const struct ai_reloc_bin_hdr *bin) { #if defined(AI_RELOC_RT_MCU_CHECKING) && AI_RELOC_RT_MCU_CHECKING == 1 const uint32_t flags = bin->hdr.flags; const uint32_t cpuid = _GET_PART_NUMBER(); if (!bin || (bin->hdr.magic != AI_RELOC_MAGIC) || (((uintptr_t)bin & 0x3) != 0)) { #if defined(APP_DEBUG) && APP_DEBUG == 1 printf("AI RELOC ERROR: Binary is invalid\r\n"); #endif return -1; }
在此给出文件的详细路径如下: X-CUBE-AI.7.0.0/Middlewares/ST/AI/Reloc/Src/ai_reloc_network.c
在pb_decode.c中问题类似,checkreturn decode_callback_field函数中的指针变量pCallback访问在空指针判断之前进行,存在可能的空指针引用,进而引起程序异常退出。
static bool checkreturn decode_callback_field(pb_istream_t *stream, pb_wire_type_t wire_type, pb_field_iter_t *iter) { pb_callback_t *pCallback = (pb_callback_t*)iter->pData; #ifdef PB_OLD_CALLBACK_STYLE void *arg = pCallback->arg; #else void **arg = &(pCallback->arg); #endif if (pCallback == NULL || pCallback->funcs.decode == NULL) return pb_skip_field(stream, wire_type);
在此给出文件的详细路径如下: X-CUBE-AI.7.0.0/Middlewares/ST/AI/Validation/Src/pb_decode.c
修改顺序,使指针变量先进行空指针判断再进行访问
ALL ]
必须选择一项 Choose one (Mandatory):
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0
该问题是MCU厂商HAL库的问题,非RT-Thread代码,我们合并了也没有任何意义,下个版本更新过来,你的修改会被覆盖掉
拉取/合并请求描述:(PR description)
[
为什么提交这份PR (why to submit this PR)
在ai_reloc_network.c中ai_reloc_rt_mcu_checking函数中的指针变量bin访问在空指针判断之前进行,存在可能的空指针引用,进而引起程序异常退出。
在此给出文件的详细路径如下: X-CUBE-AI.7.0.0/Middlewares/ST/AI/Reloc/Src/ai_reloc_network.c
在pb_decode.c中问题类似,checkreturn decode_callback_field函数中的指针变量pCallback访问在空指针判断之前进行,存在可能的空指针引用,进而引起程序异常退出。
在此给出文件的详细路径如下: X-CUBE-AI.7.0.0/Middlewares/ST/AI/Validation/Src/pb_decode.c
你的解决方案是什么 (what is your solution)
修改顺序,使指针变量先进行空指针判断再进行访问
在什么测试环境下测试通过 (what is the test environment)
ALL ]
当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0
代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up