labcif / GBoard4A

Digital forensic analysis of GBoard for Android
GNU General Public License v3.0
0 stars 1 forks source link

Empty lists are declared as null instead of empty array #24

Closed ljmf00 closed 3 years ago

ljmf00 commented 3 years ago

An empty dictionary database reports null entries instead of [] in the JSON output.

"dictionaries": [
                {
                        "path": "./gboard-data-10.2.07.351353117-release-arm64-v8a/data/data/com.google.android.inputmethod.latin/databases/PersonalDictionary.db",
                        "entries": null
                }
        ],
SEVERE: GBoard4A experienced an error during analysis (data source = LogicalFileSet1, objId = 1, pipeline id = 4, ingest job id = 4)
Traceback (most recent call last):
  File "/home/luis/.autopsy/dev/python_modules/GBoard4A/gboard_autopsy.py", line 129, in process
    self.report_analysis(input_dir, data_source, blackboard, file_manager, analysis_output)
  File "/home/luis/.autopsy/dev/python_modules/GBoard4A/gboard_autopsy.py", line 129, in process
    self.report_analysis(input_dir, data_source, blackboard, file_manager, analysis_output)
  File "/home/luis/.autopsy/dev/python_modules/GBoard4A/gboard_autopsy.py", line 252, in report_analysis
    for entry in dictionary['entries']:
TypeError: 'NoneType' object is not iterable

    org.python.core.Py.TypeError(Py.java:259)
    org.python.core.PyObject.__iter__(PyObject.java:881)
    gboard_autopsy$py.report_analysis$19(/home/luis/.autopsy/dev/python_modules/GBoard4A/gboard_autopsy.py:259)
    gboard_autopsy$py.call_function(/home/luis/.autopsy/dev/python_modules/GBoard4A/gboard_autopsy.py)
    org.python.core.PyTableCode.call(PyTableCode.java:167)
    org.python.core.PyBaseCode.call(PyBaseCode.java:307)
    org.python.core.PyBaseCode.call(PyBaseCode.java:198)
    org.python.core.PyFunction.__call__(PyFunction.java:482)
    org.python.core.PyMethod.instancemethod___call__(PyMethod.java:237)
    org.python.core.PyMethod.__call__(PyMethod.java:228)
    org.python.core.PyMethod.__call__(PyMethod.java:218)
    gboard_autopsy$py.process$11(/home/luis/.autopsy/dev/python_modules/GBoard4A/gboard_autopsy.py:137)
    gboard_autopsy$py.call_function(/home/luis/.autopsy/dev/python_modules/GBoard4A/gboard_autopsy.py)
    org.python.core.PyTableCode.call(PyTableCode.java:167)
    org.python.core.PyBaseCode.call(PyBaseCode.java:307)
    org.python.core.PyBaseCode.call(PyBaseCode.java:198)
    org.python.core.PyFunction.__call__(PyFunction.java:482)
    org.python.core.PyMethod.instancemethod___call__(PyMethod.java:237)
    org.python.core.PyMethod.__call__(PyMethod.java:228)
    org.python.core.PyMethod.__call__(PyMethod.java:218)
    org.python.core.PyMethod.__call__(PyMethod.java:213)
    org.python.core.PyObject._jcallexc(PyObject.java:3626)
    org.python.core.PyObject._jcall(PyObject.java:3658)
    org.python.proxies.gboard_autopsy$GboardDataSourceIngestModule$49.process(Unknown Source)
    org.sleuthkit.autopsy.ingest.DataSourceIngestPipeline$PipelineModule.process(DataSourceIngestPipeline.java:198)
    org.sleuthkit.autopsy.ingest.DataSourceIngestPipeline.process(DataSourceIngestPipeline.java:111)
    org.sleuthkit.autopsy.ingest.IngestJobPipeline.process(IngestJobPipeline.java:943)
    org.sleuthkit.autopsy.ingest.DataSourceIngestTask.execute(DataSourceIngestTask.java:30)
    org.sleuthkit.autopsy.ingest.IngestManager$ExecuteIngestJobTasksTask.run(IngestManager.java:961)
    java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    java.util.concurrent.FutureTask.run(FutureTask.java:266)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    java.lang.Thread.run(Thread.java:748)