No description
833ea8d502
The problem is that time_t is signed, and the original code relied on the fact that (X + c < X) in case of overflow for c >= 0. Unfortunately, this condition is only guaranteed by the standard for unsigned arithmetic, and the gcc 4.4.0 optimizer did completely remove the corresponding test from the code. This resulted in a missing boundary check, and an infinite loop. The problem is solved by testing explicitely for TIME_T_MIN and TIME_T_MAX in the loop that uses this. Also fix increment_overflow and long_increment_overflow which were buggy for exactly the same reasons. Also remove some compiler warnings. Note: a similar fix was performed in bionic/libc |
||
---|---|---|
adb | ||
cpio | ||
debuggerd | ||
fastboot | ||
include | ||
init | ||
libacc | ||
libctest | ||
libcutils | ||
liblog | ||
libmincrypt | ||
libnetutils | ||
libpixelflinger | ||
libsysutils | ||
libzipfile | ||
logcat | ||
logwrapper | ||
mkbootimg | ||
netcfg | ||
nexus | ||
rootdir | ||
sh | ||
toolbox | ||
vold | ||
.gitignore | ||
Android.mk | ||
README |
The system/ directory is intended for pieces of the world that are the core of the embedded linux platform at the heart of Android. These essential bits are required for basic booting, operation, and debugging. They should not depend on libraries outside of system/... (some of them do currently -- they need to be updated or changed) and they should not be required for the simulator build. The license for all these pieces should be clean (Apache2, BSD, or MIT). Currently system/bluetooth/... and system/extra/... have some pieces with GPL/LGPL licensed code. Assorted Issues: - pppd depends on libutils for logging - pppd depends on libcrypt/libcrypto - init, linker, debuggerd, toolbox, usbd depend on libcutils - should probably rename bionic to libc