mirror of
https://github.com/Qortal/altcoinj.git
synced 2025-02-19 13:45:48 +00:00
Fix OP_PUSHDATA decoding by preventing sign-extension. Clears some FindBugs warnings.
This commit is contained in:
parent
5668e1457e
commit
df1ba42100
@ -826,10 +826,13 @@ public class Script {
|
|||||||
} else if (opcode == OP_PUSHDATA1) {
|
} else if (opcode == OP_PUSHDATA1) {
|
||||||
additionalBytes = inputScript[cursor] + 1;
|
additionalBytes = inputScript[cursor] + 1;
|
||||||
} else if (opcode == OP_PUSHDATA2) {
|
} else if (opcode == OP_PUSHDATA2) {
|
||||||
additionalBytes = (inputScript[cursor] | (inputScript[cursor+1] << 8)) + 2;
|
additionalBytes = ((0xFF & inputScript[cursor]) |
|
||||||
|
((0xFF & inputScript[cursor+1]) << 8)) + 2;
|
||||||
} else if (opcode == OP_PUSHDATA4) {
|
} else if (opcode == OP_PUSHDATA4) {
|
||||||
additionalBytes = (inputScript[cursor] | (inputScript[cursor+1] << 8) |
|
additionalBytes = ((0xFF & inputScript[cursor]) |
|
||||||
(inputScript[cursor+1] << 16) | (inputScript[cursor+1] << 24)) + 4;
|
((0xFF & inputScript[cursor+1]) << 8) |
|
||||||
|
((0xFF & inputScript[cursor+1]) << 16) |
|
||||||
|
((0xFF & inputScript[cursor+1]) << 24)) + 4;
|
||||||
}
|
}
|
||||||
if (!skip) {
|
if (!skip) {
|
||||||
try {
|
try {
|
||||||
@ -859,7 +862,7 @@ public class Script {
|
|||||||
if (data[i] != 0)
|
if (data[i] != 0)
|
||||||
{
|
{
|
||||||
// "Can be negative zero" -reference client (see OpenSSL's BN_bn2mpi)
|
// "Can be negative zero" -reference client (see OpenSSL's BN_bn2mpi)
|
||||||
if (i == data.length - 1 && data[i] == 0x80)
|
if (i == data.length - 1 && (data[i] & 0xFF) == 0x80)
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user