Actions
Bug #1399
closedgmtime() return NULL pointer in field tm_zone
Start date:
05/21/2016
Due date:
% Done:
100%
Estimated time:
CPU Architecture:
Host OS:
Toolchain:
Android version:
CrystaX NDK Version:
Description
test program:
#include <errno.h>
#include <time.h>
#include <stdio.h>
static const char NULL_PTR_VALUE[] = "<NULL>";
int main(int argc, char* argv[])
{
time_t when;
struct tm *local;
when = time(NULL);
local = gmtime(&when);
if (local == NULL)
{
printf("gmtime() failed, errno=%d\n", errno);
return 1;
}
const char* tm_zone = local->tm_zone;
if (tm_zone == NULL)
tm_zone = NULL_PTR_VALUE;
printf("date: %d.%d.%d, time: %d:%d:%d, zone: %s\n",
local->tm_year + 1900, local->tm_mon + 1, local->tm_mday,
local->tm_hour, local->tm_min, local->tm_sec,
tm_zone);
return 0;
}
output:
[build 824]
shell@remix_x86_64:/data/local/tmp $ ./test_gmtime_old
date: 2016.5.21, time: 16:9:36, zone: GMT
[build 853]
shell@remix_x86_64:/data/local/tmp $ ./test_gmtime
date: 2016.5.21, time: 16:9:55, zone: <NULL>
impact - we have crash in python interpreter:
shell@remix_x86_64:/data/local/tmp $ ./bin/python
Python 3.5.1 (default, May 21 2016, 15:14:20)
[GCC 5.3 20151204] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> time.gmtime()
Segmentation fault
Program received signal SIGSEGV, Segmentation fault.
strlen (str=str@entry=0x0)
at /home/cislave/workspace/ndk-build-all/HOST/linux/LABEL/ndk-build/platform/ndk/sources/crystax/gen/freebsd/lib/libc/string/mangled-strlen.c:100
100 in /home/cislave/workspace/ndk-build-all/HOST/linux/LABEL/ndk-build/platform/ndk/sources/crystax/gen/freebsd/lib/libc/string/mangled-strlen.c
(gdb) bt
#0 strlen (str=str@entry=0x0)
at /home/cislave/workspace/ndk-build-all/HOST/linux/LABEL/ndk-build/platform/ndk/sources/crystax/gen/freebsd/lib/libc/string/mangled-strlen.c:100
#1 0x00005555556adbe2 in PyUnicode_DecodeLocale (str=0x0, errors=0x555555a3423d "surrogateescape")
at /home/vet/me/android/0/externals/python35/Objects/unicodeobject.c:3573
#2 0x0000555555797e3b in tmtotuple (p=p@entry=0x7fffffffe230) at /home/vet/me/android/0/externals/python35/Modules/timemodule.c:296
#3 0x0000555555798d25 in time_gmtime (self=<optimized out>, args=<optimized out>) at /home/vet/me/android/0/externals/python35/Modules/timemodule.c:351
#4 0x0000555555666a09 in PyCFunction_Call (func=func@entry=0x7ffff7d18828, args=args@entry=0x7ffff7df4048, kwds=kwds@entry=0x0)
at /home/vet/me/android/0/externals/python35/Objects/methodobject.c:109
#5 0x00005555556d9e08 in call_function (oparg=<optimized out>, pp_stack=0x7fffffffe3b0) at /home/vet/me/android/0/externals/python35/Python/ceval.c:4655
#6 PyEval_EvalFrameEx (f=f@entry=0x7ffff7df3868, throwflag=throwflag@entry=0) at /home/vet/me/android/0/externals/python35/Python/ceval.c:3185
#7 0x00005555556dbd19 in _PyEval_EvalCodeWithName (_co=_co@entry=0x7ffff7d4d420, globals=globals@entry=0x7ffff7d9f5c8,
locals=locals@entry=0x7ffff7d9f5c8, args=args@entry=0x0, argcount=argcount@entry=0, kws=kws@entry=0x0, kwcount=kwcount@entry=0, defs=defs@entry=0x0,
defcount=defcount@entry=0, kwdefs=kwdefs@entry=0x0, closure=closure@entry=0x0, name=name@entry=0x0, qualname=qualname@entry=0x0)
at /home/vet/me/android/0/externals/python35/Python/ceval.c:3966
#8 0x00005555556dbe19 in PyEval_EvalCodeEx (_co=_co@entry=0x7ffff7d4d420, globals=globals@entry=0x7ffff7d9f5c8, locals=locals@entry=0x7ffff7d9f5c8,
args=args@entry=0x0, argcount=argcount@entry=0, kws=kws@entry=0x0, kwcount=kwcount@entry=0, defs=defs@entry=0x0, defcount=defcount@entry=0,
kwdefs=kwdefs@entry=0x0, closure=closure@entry=0x0) at /home/vet/me/android/0/externals/python35/Python/ceval.c:3987
#9 0x00005555556dbe5c in PyEval_EvalCode (co=co@entry=0x7ffff7d4d420, globals=globals@entry=0x7ffff7d9f5c8, locals=locals@entry=0x7ffff7d9f5c8)
at /home/vet/me/android/0/externals/python35/Python/ceval.c:777
#10 0x00005555556140a5 in run_mod (mod=mod@entry=0x7ffff6d870e0, filename=filename@entry=0x7ffff7d4c928, globals=0x7ffff7d9f5c8, locals=0x7ffff7d9f5c8,
flags=flags@entry=0x7fffffffe6d0, arena=arena@entry=0x7ffff6c17160) at /home/vet/me/android/0/externals/python35/Python/pythonrun.c:970
#11 0x0000555555615fe7 in PyRun_InteractiveOneObject (fp=fp@entry=0x555556361980 <__sF>, filename=filename@entry=0x7ffff7d4c928,
flags=flags@entry=0x7fffffffe6d0) at /home/vet/me/android/0/externals/python35/Python/pythonrun.c:233
#12 0x00005555556162ce in PyRun_InteractiveLoopFlags (fp=fp@entry=0x555556361980 <__sF>, filename_str=filename_str@entry=0x555555a3426f "<stdin>",
flags=flags@entry=0x7fffffffe6d0) at /home/vet/me/android/0/externals/python35/Python/pythonrun.c:112
#13 0x00005555556169ff in PyRun_AnyFileExFlags (fp=fp@entry=0x555556361980 <__sF>, filename=0x555555a3426f "<stdin>", closeit=0,
flags=flags@entry=0x7fffffffe6d0) at /home/vet/me/android/0/externals/python35/Python/pythonrun.c:74
#14 0x00005555556c0eaa in run_file (p_cf=0x7fffffffe6d0, filename=0x0, fp=0x555556361980 <__sF>)
at /home/vet/me/android/0/externals/python35/Modules/main.c:318
#15 Py_Main (argc=<optimized out>, argv=<optimized out>) at /home/vet/me/android/0/externals/python35/Modules/main.c:768
#16 0x00005555555fea3f in main (argc=1, argv=<optimized out>) at jni/interpreter.c:55
Actions