diff --git a/jdk/src/share/native/common/check_code.c b/jdk/src/share/native/common/check_code.c index 491b95cd217..9c8198391a1 100644 --- a/jdk/src/share/native/common/check_code.c +++ b/jdk/src/share/native/common/check_code.c @@ -1683,12 +1683,13 @@ static int instruction_length(unsigned char *iptr, unsigned char *end) switch (instruction) { case JVM_OPC_tableswitch: { int *lpc = (int *)UCALIGN(iptr + 1); + int64_t low, high, index; if (lpc + 2 >= (int *)end) { return -1; /* do not read pass the end */ } - int64_t low = _ck_ntohl(lpc[1]); - int64_t high = _ck_ntohl(lpc[2]); - int64_t index = high - low; + low = _ck_ntohl(lpc[1]); + high = _ck_ntohl(lpc[2]); + index = high - low; // The value of low must be less than or equal to high - i.e. index >= 0 if ((index < 0) || (index > 65535)) { return -1; /* illegal */