建立 MAG160C 逆向工程交接仓库
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
# Task 2 Report
|
||||
|
||||
status: DONE_WITH_CONCERNS
|
||||
|
||||
## Files created/modified
|
||||
|
||||
- CMakeLists.txt
|
||||
- include/mag160c/mag160c.h
|
||||
- src/core/tcm_frame.hpp
|
||||
- src/core/tcm_frame.cpp
|
||||
- src/c_api.cpp
|
||||
- tests/cpp/test_c_api.cpp
|
||||
- tests/cpp/test_tcm_frame.cpp
|
||||
- progress.md
|
||||
|
||||
## Commands run
|
||||
|
||||
```powershell
|
||||
g++ -std=c++17 -DMAG160C_STATIC -DMAG160C_HAS_LIBUSB=0 -Iinclude -Isrc src\core\error.cpp src\core\context.cpp src\core\tcm_frame.cpp src\c_api.cpp tests\cpp\test_c_api.cpp -o build_task2_c_api_test.exe
|
||||
.\build_task2_c_api_test.exe
|
||||
g++ -std=c++17 -DMAG160C_STATIC -DMAG160C_HAS_LIBUSB=0 -Iinclude -Isrc src\core\error.cpp src\core\context.cpp src\core\tcm_frame.cpp src\c_api.cpp tests\cpp\test_tcm_frame.cpp -o build_task2_tcm_frame_test.exe
|
||||
.\build_task2_tcm_frame_test.exe
|
||||
```
|
||||
|
||||
## Test results
|
||||
|
||||
- Direct MinGW C++17 compile/run verification passed for test_c_api.
|
||||
- Direct MinGW C++17 compile/run verification passed for test_tcm_frame.
|
||||
|
||||
## Concerns
|
||||
|
||||
- CMake/CTest verification remains unavailable because cmake is not installed or not on PATH in this environment.
|
||||
- Generated local executables build_task2_c_api_test.exe and build_task2_tcm_frame_test.exe exist from substitute verification.
|
||||
|
||||
## Self-review notes
|
||||
|
||||
- TCM encode exact vector for rotate +5 is implemented and tested.
|
||||
- Header checksum and body checksum use additive uint8_t wrapping.
|
||||
- C ABI encode reports required size when output buffer is too small.
|
||||
- C ABI decode_header delegates to decode_tcm_frame and returns parsed main/sub/frame/payload size.
|
||||
- Public header now includes stddef.h and stdint.h because Task 2 introduced size_t and fixed-width integer types.
|
||||
|
||||
## Fix report: oversized TCM payload safety
|
||||
|
||||
status: DONE
|
||||
|
||||
### Files modified
|
||||
|
||||
- src/core/tcm_frame.cpp
|
||||
- src/c_api.cpp
|
||||
- tests/cpp/test_c_api.cpp
|
||||
- tests/cpp/test_tcm_frame.cpp
|
||||
|
||||
### Commands run
|
||||
|
||||
```powershell
|
||||
g++ -std=c++17 -DMAG160C_STATIC -DMAG160C_HAS_LIBUSB=0 -Iinclude -Isrc src\core\error.cpp src\core\context.cpp src\core\tcm_frame.cpp src\c_api.cpp tests\cpp\test_c_api.cpp -o build_task2_c_api_test.exe
|
||||
.\build_task2_c_api_test.exe
|
||||
g++ -std=c++17 -DMAG160C_STATIC -DMAG160C_HAS_LIBUSB=0 -Iinclude -Isrc src\core\error.cpp src\core\context.cpp src\core\tcm_frame.cpp src\c_api.cpp tests\cpp\test_tcm_frame.cpp -o build_task2_tcm_frame_test.exe
|
||||
.\build_task2_tcm_frame_test.exe
|
||||
```
|
||||
|
||||
### Test results
|
||||
|
||||
- Direct MinGW C++17 compile/run verification passed for test_c_api.
|
||||
- Direct MinGW C++17 compile/run verification passed for test_tcm_frame.
|
||||
|
||||
### Self-review
|
||||
|
||||
- Oversized payloads are rejected before allocation/copy.
|
||||
- C ABI oversized payload path returns MAG160C_ERR_INVALID_ARGUMENT, sets out_size to 0, and sets last_error containing "too large".
|
||||
- Core encode_tcm_frame oversized payload path is covered by a std::length_error test.
|
||||
Reference in New Issue
Block a user