You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "rootvector2 (via GitHub)" <gi...@apache.org> on 2026/07/01 06:55:18 UTC

[PR] read unsigned bytecode operands in CodeHTML disassembler [commons-bcel]

rootvector2 opened a new pull request, #511:
URL: https://github.com/apache/commons-bcel/pull/511

   `CodeHTML.codeToHTML` disassembles byte code independently of the class-file model and read wide local-variable indices, field/method/class/`LDC_W` constant-pool indices and the `multianewarray` dimension count with signed `readShort()`/`readByte()`, so a class whose operand is `>= 0x8000` (or dimensions `>= 128`) sign-extends to a negative value and the generated `_code.html` shows a negative slot/dimension or does a wrong constant-pool lookup; the reference disassembler `Utility.codeToString` already reads all of these as unsigned, so this makes `codeToHTML` match it. Found by diffing the two disassemblers operand by operand.
   
   - [x] Read the [contribution guidelines](CONTRIBUTING.md) for this project.
   - [ ] Read the [ASF Generative Tooling Guidance](https://www.apache.org/legal/generative-tooling.html) if you use Artificial Intelligence (AI).
   - [ ] I used AI to create any part of, or all of, this pull request. Which AI tool was used to create this pull request, and to what extent did it contribute?
   - [x] Run a successful build using the default [Maven](https://maven.apache.org/) goal with `mvn`; that's `mvn` on the command line by itself.
   - [x] Write unit tests that match behavioral changes, where the tests fail if the changes to the runtime are not applied. This may not always be possible, but it is a best practice.
   - [x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
   - [x] Each commit in the pull request should have a meaningful subject line and body. Note that a maintainer may squash commits during the merge process.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@commons.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Read unsigned bytecode operands in CodeHTML disassembler [commons-bcel]

Posted by "rootvector2 (via GitHub)" <gi...@apache.org>.
rootvector2 commented on PR #511:
URL: https://github.com/apache/commons-bcel/pull/511#issuecomment-4878256360

   good question, i went digging after this one. the class-file model path already reads everything unsigned: the `generic/*` instruction reads and the `classfile/*` attribute parsers pull cp indices, local-var indices and counts with `readUnsignedShort`, and `Utility.codeToString` reads its operands unsigned too, so `CodeHTML` was the outlier that had drifted from the reference. the signed reads left in both disassemblers are operands that are genuinely signed: branch offsets, `IINC` increment, `SIPUSH`/`BIPUSH` constants, and the `NEWARRAY` atype byte. the only borderline one is `StackMapType` reading its tag with `readByte()`, but `checkType` pins it to 0..8 so signed vs unsigned can't change the result there. didn't spot any other real misread.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@commons.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Read unsigned bytecode operands in CodeHTML disassembler [commons-bcel]

Posted by "garydgregory (via GitHub)" <gi...@apache.org>.
garydgregory commented on PR #511:
URL: https://github.com/apache/commons-bcel/pull/511#issuecomment-4878436575

   @rootvector2 
   OK great, thank you for digging in.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@commons.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org