Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix coverity #2546

Merged
merged 1 commit into from
Nov 13, 2024
Merged

fix coverity #2546

merged 1 commit into from
Nov 13, 2024

Conversation

imbillow
Copy link
Contributor

Your checklist for this pull request

  • I've documented or updated the documentation of every API function and struct this PR changes.
  • I've added tests that prove my fix is effective or that my feature works (if possible)

Detailed description

fix coverity

  • cid 514642

  • cid 514643

  • cid 514644

  • cid 514645


** CID 514645:  Null pointer dereferences  (NULL_RETURNS)
/arch/LoongArch/LoongArchMapping.c: 183 in LoongArch_rewrite_memory_operand()


________________________________________________________________________________________________________
*** CID 514645:  Null pointer dereferences  (NULL_RETURNS)
/arch/LoongArch/LoongArchMapping.c: 183 in LoongArch_rewrite_memory_operand()
177     
178         if (!detail_is_set(MI))
179             return;
180     
181         const loongarch_suppl_info *suppl_info =
182             map_get_suppl_info(MI, loongarch_insns);
>>>     CID 514645:  Null pointer dereferences  (NULL_RETURNS)
>>>     Dereferencing "suppl_info", which is known to be "NULL".
183         if (suppl_info->memory_access == CS_AC_INVALID) {
184             // not memory instruction
185             return;
186         }
187     
188         // handle special cases

** CID 514644:  Memory - illegal accesses  (OVERRUN)
/arch/Xtensa/XtensaDisassembler.c: 217 in DecodeMR01RegisterClass()


________________________________________________________________________________________________________
*** CID 514644:  Memory - illegal accesses  (OVERRUN)
/arch/Xtensa/XtensaDisassembler.c: 217 in DecodeMR01RegisterClass()
211                             uint64_t Address,
212                             const void *Decoder)
213     {
214         if (RegNo > 2)
215             return MCDisassembler_Fail;
216     
>>>     CID 514644:  Memory - illegal accesses  (OVERRUN)
>>>     Overrunning array "MR01DecoderTable" of 2 4-byte elements at element index 2 (byte offset 11) using index "RegNo" (which evaluates to 2).
217         unsigned Reg = MR01DecoderTable[RegNo];
218         MCOperand_CreateReg0(Inst, (Reg));
219         return MCDisassembler_Success;
220     }
221     
222     static const unsigned MR23DecoderTable[] = { Xtensa_M2, Xtensa_M3 };

** CID 514643:  Integer handling issues  (SIGN_EXTENSION)
/arch/Xtensa/XtensaDisassembler.c: 973 in readInstructionN()


________________________________________________________________________________________________________
*** CID 514643:  Integer handling issues  (SIGN_EXTENSION)
/arch/Xtensa/XtensaDisassembler.c: 973 in readInstructionN()
967             *Size = 0;
968             return MCDisassembler_Fail;
969         }
970     
971         *Insn = 0;
972         for (unsigned i = 0; i < InstSize; i++)
>>>     CID 514643:  Integer handling issues  (SIGN_EXTENSION)
>>>     Suspicious implicit sign extension: "Bytes[i]" with type "uint8_t const" (8 bits, unsigned) is promoted in "Bytes[i] << 8U * i" to type "int" (32 bits, signed), then sign-extended to type "unsigned long" (64 bits, unsigned).  If "Bytes[i] << 8U * i" is greater than 0x7FFFFFFF, the upper bits of the result will all be 1.
973             *Insn |= (Bytes[i] << 8 * i);
974     
975         *Size = InstSize;
976         return MCDisassembler_Success;
977     }
978     

** CID 514642:  Integer handling issues  (OVERFLOW_BEFORE_WIDEN)
/arch/Xtensa/XtensaDisassembler.c: 973 in readInstructionN()


________________________________________________________________________________________________________
*** CID 514642:  Integer handling issues  (OVERFLOW_BEFORE_WIDEN)
/arch/Xtensa/XtensaDisassembler.c: 973 in readInstructionN()
967             *Size = 0;
968             return MCDisassembler_Fail;
969         }
970     
971         *Insn = 0;
972         for (unsigned i = 0; i < InstSize; i++)
>>>     CID 514642:  Integer handling issues  (OVERFLOW_BEFORE_WIDEN)
>>>     Potentially overflowing expression "Bytes[i] << 8U * i" with type "int" (32 bits, signed) is evaluated using 32-bit arithmetic, and then used in a context that expects an expression of type "uint64_t" (64 bits, unsigned).
973             *Insn |= (Bytes[i] << 8 * i);
974     
975         *Size = InstSize;
976         return MCDisassembler_Success;
977     }
978     

Test plan

...

Closing issues

...

- cid 514642

- cid 514643

- cid 514644

- cid 514645
Copy link
Collaborator

@Rot127 Rot127 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

@kabeor kabeor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thx

@kabeor kabeor merged commit abbf32b into capstone-engine:next Nov 13, 2024
19 checks passed
kabeor added a commit that referenced this pull request Nov 24, 2024
* Update changelog for V6.0.0-Alpha1 (#2493)

* update version to v6-alpha1

* update bindings const values

* Update changelog for V6.0.0-Alpha1

* Remove irrelevant changes. (#2495)

* Fixing UB santizer, `LITBASE` and assert errors. (#2499)

* Update labeler with Xtensa and v6 files. (#2500)

* Add hard asserts to all SStream functions and memset MCInst. (#2501)

* Only trigger on released action. (#2497)

* Fix cstest build with Ninja (#2506)

* Tricore EA calculation (#2504)

* Update libcyaml dependency in cstest to 1.4.2 (#2508)

* AArch64: Replace vararg add_cs_detail by multiple concrete functions

Fixes UB caused by various mismatches on how these arguments are passed
and read. This became visible when running on PowerPC hosts with e.g.
`cstool -d aarch64 204862f8`.
Apart from the UB fix, this is meant to be a pure refactor.

Partially addresses #2458

* xtensa: Fix Branch Target (#2516)

* xtensa: Fix Branch Target

* auto-sync: fix byte pattern

* xtensa: add branch insn tests

* Revert "auto-sync: fix byte pattern"

This reverts commit cf8e870.

* Fix #2509. (#2510)

Compatibility headers should always include the header in the same dir.

* Fix stringop-truncation warning some compilers raise. (#2522)

* Add CC and VAS compatibility macros (#2525)

* Fix endianess issue during assignment. (#2528)

* This time actually fix big endian issue. (#2530)

* tricore: fixes #2474 (#2523)

* tricore: fix auto-sync tricore

* tricore: fixes TriCoreGenCSMappingInsnName.inc

* tricore: fixes

* tricore: try fix ld.a SC

* tricore: fixes all

* Add TriCore to .github/workflows/auto-sync.yaml

* Add TriCore details tests(a15, d15, a10|sp)

* Change CI to create Debian Package to Release (#2521)

* Updating CI to create Debian package and version is assigned by tag
version. Also updating release CI to not use end-of-life workflows

* Clear up usage of static libraries.

- Python bindings only use the dynamic lib. But built and copied the static ones sometimes nonetheless.
- Add toggles to build only static, static/dyn or only dynamic.

---------

Co-authored-by: Rot127 <unisono@quyllur.org>

* Rename build arguments: (#2534)

- BUILD_SHARED_LIBS -> CAPSTONE_BUILD_SHARED_LIBS
- BUILD_STATIC_LIBS -> CAPSTONE_BUILD_STATIC_LIBS
- BUILD_STATIC_LIBS -> CAPSTONE_BUILD_STATIC_MSVC_RUNTIME

* xtensa: update to espressif/llvm-project (#2533)

* fix coverity (#2546)

- cid 514642

- cid 514643

- cid 514644

- cid 514645

* Move debian package generation to a dispatch only workflow (#2543)

* Move deb package gen files int package/deb

* Fix basename check

* Make debian package generation dispatch only

* Python package building rework (#2538)

* - Refactored setup.py to remove hacks regarding packaging of wheels for different platforms, improve and cleanup the code
- Updated README.txt
- Removed old Makefile and build_wheel.sh scripts
- Created a new workflow that takes care of building and testing python packages for different platforms/architectures/python versions

* Added SPDX headers to the setup.py

* - cstest_py: Fixed positional argument since it doesn't accept a `required` flag. It turns to have a mandatory tests folder path
- integration_tests.py: Use pathlib to determine the required path
- GitHub action: Simplified the tests execution command

* GitHub Actions: Run python 3.8 (lowest) and 3.13 (current highest) for native runners only during testings and the rest during tag release

* GitHub Action:
- Fixed the cibw_build matrix element
- Added a step to prepare artifact name

* GitHub Action: Added run_tests.py script to run all tests during CI workflow

* - Added SPDX headers to the run_tests.py script and to the build-wheels-publish.yml workflow file
- Minor fixes to the workflow as pointed out in the PR review
- Updated MANIFEST.in to reflect the actual libraries built during python wheel creation process
- Use subprocess.run in place of os.system in run_tests.py script

* GitHub Action:
- Run qemu step only if non-native Linux runner
- Added arch:universal2 matrix element for macos-latest runner

* Python bindings: Refreshed the list of files needed to be copied for sdist archive

* GitHub Action: Commented out arch:x86 matrix elements

* GitHub Action: Run qemu step only if non-native Linux runner

* GitHub Action: Minor fixes

* Python bindings: Added missing .in pattern when collecting src files for sdist archive

* Auto-Sync reproducability + ARM update (#2532)

* fix xtensa DecodeMR23RegisterClass and add tests for MAC16 instru… (#2551)

* fix xtensa `DecodeMR23RegisterClass` and add tests for `MAC16` instructions

* revert

* Prepare for update (#2552)

* Bindings(chore): Fix DeprecationWarning

* Version(upgrade): update bindings const

* Fix(chore): Fix ARMCC_Invalid is not defined

* Update Changelog Version to 6.0.0-Alpha2 (#2553)

* Bindings(chore): Fix DeprecationWarning

* Version(upgrade): update bindings const

* Fix(chore): Fix ARMCC_Invalid is not defined

* Changelog: Update to version 6.0.0-Alpha2

---------

Co-authored-by: Rot127 <45763064+Rot127@users.noreply.github.com>
Co-authored-by: Florian Märkl <info@florianmaerkl.de>
Co-authored-by: billow <billow.fun@gmail.com>
Co-authored-by: Andrew <afq2101@columbia.edu>
Co-authored-by: Rot127 <unisono@quyllur.org>
Co-authored-by: @Antelox <anteloxrce@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants