OpenWrt/LEDE Project

  • Status Unconfirmed
  • Percent Complete
  • Task Type Bug Report
  • Category Packages
  • Assigned To No-one
  • Operating System All
  • Severity High
  • Priority Very Low
  • Reported Version All
  • Due in Version Undecided
  • Due Date Undecided
  • Private
Attached to Project: OpenWrt/LEDE Project
Opened by Víctor Calvís - 03.08.2017

FS#948 - lua: on 64bit targets integer number truncation may occur

On 64bit target implementations (eg x86_64) and with LNUM on int32
mode (default), assignation of an integer number greater than
UINT_MAX (ie 4294967295), but lesser or equal than UINT_MAX +
0x7FFFFFFF + 1 (ie 6442450943) to a variable does result in
truncation of the final value stored in memory.


   > n=4294967296; print(n)
   > n=6442450943; print(n)

LNUM does perform a C-Style cast in the intermediate function wrapper
used to check for the fitness of numbers. This cast is not only unnecessary
but also brings on undefined behaviour on 64bit target implementations
where INT’s and LONG’s are of size 32 and 64bit respectively.

Removal of the unnecessary cast in wrapper does bring back the ‘overflow detection’.

Regards, Víctor Calvís.

Chen Minqiang commented on 01.11.2018 03:01

could u provide a patch?


Available keyboard shortcuts


Task Details

Task Editing