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

LEDE Bugs lede-bugs at lists.infradead.org
Thu Aug 3 03:56:14 PDT 2017


A new Flyspray task has been opened.  Details are below. 

User who did this - Víctor Calvís (vcalvis) 

Attached to Project - LEDE Project
Summary - lua: on 64bit targets integer number truncation may occur
Task Type - Bug Report
Category - Packages
Status - Unconfirmed
Assigned To - 
Operating System - All
Severity - High
Priority - Very Low
Reported Version - All
Due in Version - Undecided
Due Date - Undecided
Details - 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.

More information can be found at the following URL:
https://bugs.lede-project.org/index.php?do=details&task_id=948



More information about the lede-bugs mailing list