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 IndexOutOfBoundsException when Invalid function selector is provided #11371

Closed
Neeharika-Sompalli opened this issue Feb 5, 2024 · 2 comments
Assignees
Labels
Bug An error that causes the feature to behave differently than what was expected based on design.

Comments

@Neeharika-Sompalli
Copy link
Member

Neeharika-Sompalli commented Feb 5, 2024

Description

When an Invalid function selector of length less than 4 bytes is provided, we are failing with IndexoutOfBoundsException

2024-02-05 10:04:53.928 ERROR 173  ServicesTxnManager - Possibly CATASTROPHIC failure in txn processing :: signedTransactionBytes: "\n\243\001\n\023\n\f\b\304\345\202\256\006\020\300\346\350\302\002\022\003\030\350\b\022\002\030\003\030\200\344\227\320\022\"\002\bx2IMirror Node acceptance test: 2024-02-05T10:04:51.459327Z Execute contract:3\n\004\030\321\306\001\020\300\215\267\001\030d\"$cn\b+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001g\022g\ne\n!\002\324Xph\376_]B\211}+!\327\354\312\2039\231\220GO\300\333\315\362\236\207!9\352\274\3032@\203ue\035\aE\322\222\261\361[O\327 \206\375E\251\250K\321\351tA*\360\030&\324\026n\206N\352%8$q\365\376@\241\270\222\254\021}\253\211\004\223/Z\v\272\215\300\003&p\'h\033P"  ==>> --- ACCOUNTS --- {0.0.1128: [BALANCE -> 188154500220], 0.0.3: [BALANCE -> 31489405907]} --- TOKEN RELATIONSHIPS --- {} --- NFTS --- {} --- TOKENS --- {} ==>> java.lang.IndexOutOfBoundsException: index is out of bounds 	at org.apache.tuweni.bytes.Checks.checkElementIndex(Utils.java:29) ~[tuweni-bytes-2.4.2-module.jar:2.4.2] 	at org.apache.tuweni.bytes.Bytes.getInt(Bytes.java:674) ~[tuweni-bytes-2.4.2-module.jar:2.4.2] 	at org.apache.tuweni.bytes.Bytes.getInt(Bytes.java:661) ~[tuweni-bytes-2.4.2-module.jar:2.4.2] 	at com.hedera.node.app.service.mono.store.contracts.precompile.HTSPrecompiledContract.prepareComputation(HTSPrecompiledContract.java:317) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.store.contracts.precompile.HTSPrecompiledContract.computePrecompile(HTSPrecompiledContract.java:237) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.store.contracts.precompile.HTSPrecompiledContract.computeCosted(HTSPrecompiledContract.java:219) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.contracts.execution.HederaMessageCallProcessorV038.executeHederaPrecompile(HederaMessageCallProcessorV038.java:97) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.evm.contracts.execution.HederaEvmMessageCallProcessorV038.start(HederaEvmMessageCallProcessorV038.java:70) ~[app-service-evm-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.contracts.execution.HederaMessageCallProcessorV038.start(HederaMessageCallProcessorV038.java:78) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at org.hyperledger.besu.evm.processor.AbstractMessageProcessor.process(AbstractMessageProcessor.java:196) ~[evm-23.10.2-module.jar:23.10.2] 	at com.hedera.node.app.service.evm.contracts.execution.HederaEvmTxProcessor.process(HederaEvmTxProcessor.java:218) ~[app-service-evm-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.evm.contracts.execution.HederaEvmTxProcessor.execute(HederaEvmTxProcessor.java:161) ~[app-service-evm-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.contracts.execution.EvmTxProcessor.execute(EvmTxProcessor.java:146) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.contracts.execution.CallEvmTxProcessor.execute(CallEvmTxProcessor.java:75) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.txns.contract.ContractCallTransitionLogic.doStateTransitionOperation(ContractCallTransitionLogic.java:158) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.txns.contract.ContractCallTransitionLogic.doStateTransition(ContractCallTransitionLogic.java:131) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.txns.TransitionRunner.tryTransition(TransitionRunner.java:123) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.state.logic.RequestedTransition.finishFor(RequestedTransition.java:62) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.state.logic.TopLevelTransition.run(TopLevelTransition.java:109) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.state.logic.ServicesTxnManager.process(ServicesTxnManager.java:121) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.state.logic.StandardProcessLogic.doProcess(StandardProcessLogic.java:185) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.state.logic.StandardProcessLogic.incorporate(StandardProcessLogic.java:144) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.state.logic.StandardProcessLogic.incorporateConsensusTxn(StandardProcessLogic.java:115) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.txns.ProcessLogic.lambda$incorporateConsensus$0(ProcessLogic.java:40) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.swirlds.platform.system.Round.forEachEventTransaction(Round.java:105) ~[swirlds-platform-core-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.txns.ProcessLogic.incorporateConsensus(ProcessLogic.java:39) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.hedera.node.app.service.mono.ServicesState.handleConsensusRound(ServicesState.java:304) ~[app-service-mono-0.47.0-alpha.2.jar:?] 	at com.swirlds.platform.state.TransactionHandler.handleRound(TransactionHandler.java:84) ~[swirlds-platform-core-0.47.0-alpha.2.jar:?] 	at com.swirlds.platform.state.SwirldStateManager.handleConsensusRound(SwirldStateManager.java:169) ~[swirlds-platform-core-0.47.0-alpha.2.jar:?] 	at com.swirlds.platform.eventhandling.ConsensusRoundHandler.applyConsensusRoundToState(ConsensusRoundHandler.java:376) ~[swirlds-platform-core-0.47.0-alpha.2.jar:?] 	at com.swirlds.common.threading.framework.internal.QueueThreadImpl.doWork(QueueThreadImpl.java:253) ~[swirlds-common-0.47.0-alpha.2.jar:?] 	at com.swirlds.common.threading.framework.internal.StoppableThreadImpl.doWork(StoppableThreadImpl.java:614) ~[swirlds-common-0.47.0-alpha.2.jar:?] 	at com.swirlds.common.threading.framework.internal.StoppableThreadImpl.run(StoppableThreadImpl.java:215) ~[swirlds-common-0.47.0-alpha.2.jar:?] 	at java.base/java.lang.Thread.run(Thread.java:1583) [?:?] |  
@Neeharika-Sompalli Neeharika-Sompalli self-assigned this Feb 5, 2024
@Neeharika-Sompalli Neeharika-Sompalli added the Bug An error that causes the feature to behave differently than what was expected based on design. label Feb 5, 2024
@netopyr
Copy link
Contributor

netopyr commented Feb 8, 2024

Solved as part of #11138

@netopyr netopyr closed this as completed Feb 8, 2024
@kimbor
Copy link
Member

kimbor commented Feb 12, 2024

This ended up being fixed by PR #11359

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug An error that causes the feature to behave differently than what was expected based on design.
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

3 participants