Integrate LLVM's libfuzzer engine with JerryScript (#2898)

JerryScript-DCO-1.0-Signed-off-by: Renata Hodovan reni@inf.u-szeged.hu
This commit is contained in:
Renáta Hodován
2019-06-07 14:43:20 +02:00
committed by László Langó
parent 343e80053b
commit e2646f93cc
5 changed files with 85 additions and 6 deletions
+6
View File
@@ -54,6 +54,12 @@ macro(jerry_create_executable JERRY_NAME)
install(TARGETS ${JERRY_NAME} DESTINATION bin)
endmacro()
# Jerry with libfuzzer support
if(JERRY_LIBFUZZER)
jerry_create_executable("jerry-libfuzzer" "libfuzzer.c")
target_link_libraries("jerry-libfuzzer" jerry-port-default)
endif()
# Jerry standalones
if(JERRY_CMDLINE)
jerry_create_executable("jerry" "main-unix.c" "cli.c")
+39
View File
@@ -0,0 +1,39 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "jerryscript.h"
int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
{
jerry_init (JERRY_INIT_EMPTY);
if (jerry_is_valid_utf8_string ((jerry_char_t *) data, (jerry_size_t) size))
{
jerry_value_t parse_value = jerry_parse (NULL, 0, (jerry_char_t *) data, size, JERRY_PARSE_NO_OPTS);
if (!jerry_value_is_error (parse_value))
{
jerry_value_t run_value = jerry_run (parse_value);
jerry_release_value (run_value);
}
jerry_release_value (parse_value);
}
jerry_cleanup ();
return 0;
} /* LLVMFuzzerTestOneInput */