LEDE Project

  • Status Unconfirmed
  • Percent Complete
    0%
  • 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
  • Votes
  • Private
Attached to Project: 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.

E.g.:

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

Cause:
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.

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

Regards, Víctor Calvís.

Loading...

Available keyboard shortcuts

Tasklist

Task Details

Task Editing