Flawfinder version 2.0.10, (C) 2001-2019 David A. Wheeler. Number of rules (primarily dangerous function names) in C/C++ ruleset: 223 Examining data/mlv-3.1.0/examples/advanced/12_paths.c Examining data/mlv-3.1.0/examples/advanced/09_animation.c Examining data/mlv-3.1.0/examples/advanced/10_read_xml_file.c Examining data/mlv-3.1.0/examples/advanced/08_zone_click.c Examining data/mlv-3.1.0/examples/advanced/02_font.c Examining data/mlv-3.1.0/examples/advanced/05_playlist.c Examining data/mlv-3.1.0/examples/advanced/06_image.c Examining data/mlv-3.1.0/examples/advanced/03_music.c Examining data/mlv-3.1.0/examples/advanced/01_texts_and_boxes.c Examining data/mlv-3.1.0/examples/advanced/11_animation_book.c Examining data/mlv-3.1.0/examples/advanced/07_transparency.c Examining data/mlv-3.1.0/examples/advanced/04_sound.c Examining data/mlv-3.1.0/examples/beginner/06_keyboard.c Examining data/mlv-3.1.0/examples/beginner/03_random.c Examining data/mlv-3.1.0/examples/beginner/08_mouse_keyboard_input_box_timer.c Examining data/mlv-3.1.0/examples/beginner/04_texts_and_boxes.c Examining data/mlv-3.1.0/examples/beginner/02_shapes.c Examining data/mlv-3.1.0/examples/beginner/09_colors.c Examining data/mlv-3.1.0/examples/beginner/07_input_box.c Examining data/mlv-3.1.0/examples/beginner/10_library_informations.c Examining data/mlv-3.1.0/examples/beginner/11_turtle.c Examining data/mlv-3.1.0/examples/beginner/05_mouse.c Examining data/mlv-3.1.0/examples/beginner/01_hello_world.c Examining data/mlv-3.1.0/examples/medium/10_mouse_or_keyboard_access.c Examining data/mlv-3.1.0/examples/medium/08_full_screen.c Examining data/mlv-3.1.0/examples/medium/01_keyboard_events.c Examining data/mlv-3.1.0/examples/medium/06_colors.c Examining data/mlv-3.1.0/examples/medium/11_keys_codes.c Examining data/mlv-3.1.0/examples/medium/12_desktop_size.c Examining data/mlv-3.1.0/examples/medium/04_events.c Examining data/mlv-3.1.0/examples/medium/03_input_box_events.c Examining data/mlv-3.1.0/examples/medium/09_keyboard_accents.c Examining data/mlv-3.1.0/examples/medium/07_time.c Examining data/mlv-3.1.0/examples/medium/05_exit.c Examining data/mlv-3.1.0/examples/medium/02_mouse_events.c Examining data/mlv-3.1.0/MLV/xml.c Examining data/mlv-3.1.0/MLV/input_box_wait.c Examining data/mlv-3.1.0/MLV/informations.c Examining data/mlv-3.1.0/MLV/warning_error.h Examining data/mlv-3.1.0/MLV/MLV_input_box.h Examining data/mlv-3.1.0/MLV/MLV_all.h Examining data/mlv-3.1.0/MLV/window.h Examining data/mlv-3.1.0/MLV/MLV_information.h Examining data/mlv-3.1.0/MLV/MLV_random.h Examining data/mlv-3.1.0/MLV/shapes.c Examining data/mlv-3.1.0/MLV/key.c Examining data/mlv-3.1.0/MLV/path.c Examining data/mlv-3.1.0/MLV/image.h Examining data/mlv-3.1.0/MLV/MLV_color.h Examining data/mlv-3.1.0/MLV/data_structure.h Examining data/mlv-3.1.0/MLV/platform.h Examining data/mlv-3.1.0/MLV/MLV_device_with_buttons.h Examining data/mlv-3.1.0/MLV/MLV_image.h Examining data/mlv-3.1.0/MLV/tree_map.c Examining data/mlv-3.1.0/MLV/input_box.h Examining data/mlv-3.1.0/MLV/MLV_path.h Examining data/mlv-3.1.0/MLV/MLV_keyboard.h Examining data/mlv-3.1.0/MLV/MLV_mouse.h Examining data/mlv-3.1.0/MLV/MLV_animation.h Examining data/mlv-3.1.0/MLV/turtle.h Examining data/mlv-3.1.0/MLV/MLV_xml.h Examining data/mlv-3.1.0/MLV/keyboard.c Examining data/mlv-3.1.0/MLV/tree_set.h Examining data/mlv-3.1.0/MLV/list.h Examining data/mlv-3.1.0/MLV/MLV_turtle.h Examining data/mlv-3.1.0/MLV/MLV_text.h Examining data/mlv-3.1.0/MLV/sdlkeyboardtochar.h Examining data/mlv-3.1.0/MLV/animation.c Examining data/mlv-3.1.0/MLV/time.c Examining data/mlv-3.1.0/MLV/SDLMain.h Examining data/mlv-3.1.0/MLV/color.c Examining data/mlv-3.1.0/MLV/MLV_shape.h Examining data/mlv-3.1.0/MLV/sdlkeyboardtochar.c Examining data/mlv-3.1.0/MLV/memory_management.h Examining data/mlv-3.1.0/MLV/test_turtle.c Examining data/mlv-3.1.0/MLV/list.c Examining data/mlv-3.1.0/MLV/audio.c Examining data/mlv-3.1.0/MLV/MLV_window.h Examining data/mlv-3.1.0/MLV/mouse.c Examining data/mlv-3.1.0/MLV/playlist.c Examining data/mlv-3.1.0/MLV/turtle.c Examining data/mlv-3.1.0/MLV/text.h Examining data/mlv-3.1.0/MLV/window.c Examining data/mlv-3.1.0/MLV/MLV_input_box_va.h Examining data/mlv-3.1.0/MLV/memory_debug.c Examining data/mlv-3.1.0/MLV/MLV_playlist.h Examining data/mlv-3.1.0/MLV/test_random.c Examining data/mlv-3.1.0/MLV/tree_map.h Examining data/mlv-3.1.0/MLV/test_list.c Examining data/mlv-3.1.0/MLV/MLV_text_va.h Examining data/mlv-3.1.0/MLV/MLV_time.h Examining data/mlv-3.1.0/MLV/tree_set.c Examining data/mlv-3.1.0/MLV/text.c Examining data/mlv-3.1.0/MLV/MLV_xml_va.h Examining data/mlv-3.1.0/MLV/random.c Examining data/mlv-3.1.0/MLV/image.c Examining data/mlv-3.1.0/MLV/MLV_audio.h Examining data/mlv-3.1.0/MLV/mathematics.h Examining data/mlv-3.1.0/MLV/event.c Examining data/mlv-3.1.0/MLV/key.h Examining data/mlv-3.1.0/MLV/memory_debug.h Examining data/mlv-3.1.0/MLV/MLV_event.h Examining data/mlv-3.1.0/MLV/mathematics.c Examining data/mlv-3.1.0/MLV/input_box.c FINAL RESULTS: data/mlv-3.1.0/MLV/input_box.c:556:5: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy( input_box->informativeMessage, informativeMessage ); data/mlv-3.1.0/MLV/input_box.c:713:5: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy( input_box->informativeMessage, message ); data/mlv-3.1.0/MLV/input_box.c:776:13: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy( dst, src ); data/mlv-3.1.0/MLV/input_box.c:780:13: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy( input_box->history->data, src ); data/mlv-3.1.0/MLV/keyboard.c:1397:3: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf( result, "%s", text ); data/mlv-3.1.0/MLV/path.c:116:9: [3] (buffer) g_get_tmp_dir: This function is synonymous with 'getenv("TMP")';it returns untrustable input if the environment can beset by an attacker. It can have any content and length, and the same variable can be set more than once (CWE-807, CWE-20). Check environment variables carefully before using them. return g_get_tmp_dir(); data/mlv-3.1.0/MLV/path.c:120:9: [3] (buffer) g_get_home_dir: This function is synonymous with 'getenv("HOME")';it returns untrustable input if the environment can beset by an attacker. It can have any content and length, and the same variable can be set more than once (CWE-807, CWE-20). Check environment variables carefully before using them. return g_get_home_dir(); data/mlv-3.1.0/MLV/random.c:39:9: [3] (random) g_random_boolean: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. return g_random_boolean( ); data/mlv-3.1.0/MLV/random.c:43:9: [3] (random) g_random_int_range: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. return g_random_int_range( begin, end+1 ); data/mlv-3.1.0/MLV/random.c:47:9: [3] (random) g_random_double_range: This function is not sufficiently random for security-related functions such as key and nonce creation (CWE-327). Use a more secure technique for acquiring random values. return g_random_double_range( begin, end ); data/mlv-3.1.0/MLV/event.c:167:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy( data/mlv-3.1.0/MLV/keyboard.c:1500:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1502:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_NONE" ); data/mlv-3.1.0/MLV/keyboard.c:1507:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1509:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_LSHIFT" ); data/mlv-3.1.0/MLV/keyboard.c:1514:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1516:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_RSHIFT" ); data/mlv-3.1.0/MLV/keyboard.c:1521:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1523:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_LCTRL" ); data/mlv-3.1.0/MLV/keyboard.c:1528:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1530:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_RCTRL" ); data/mlv-3.1.0/MLV/keyboard.c:1535:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1537:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_LALT" ); data/mlv-3.1.0/MLV/keyboard.c:1542:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1544:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_RALT" ); data/mlv-3.1.0/MLV/keyboard.c:1549:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1551:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_LMETA" ); data/mlv-3.1.0/MLV/keyboard.c:1556:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1558:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_RMETA" ); data/mlv-3.1.0/MLV/keyboard.c:1563:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1565:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_NUM" ); data/mlv-3.1.0/MLV/keyboard.c:1570:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1572:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_CAPS" ); data/mlv-3.1.0/MLV/keyboard.c:1577:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1579:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_MODE" ); data/mlv-3.1.0/MLV/keyboard.c:1584:12: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, " | " ); data/mlv-3.1.0/MLV/keyboard.c:1586:11: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. text += sprintf( text, "MLV_KEYBOARD_KMOD_RESERVED" ); data/mlv-3.1.0/MLV/event.c:165:20: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). int size = strlen(event.user.data2)+1; data/mlv-3.1.0/MLV/input_box.c:220:13: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). int l = strlen(input_box->history->data); data/mlv-3.1.0/MLV/input_box.c:224:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy( new, input_box->history->data , m ); data/mlv-3.1.0/MLV/input_box.c:226:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy( new + m + 1 , input_box->history->data + m , l - m ); data/mlv-3.1.0/MLV/input_box.c:255:13: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). int l = strlen(input_box->history->data); data/mlv-3.1.0/MLV/input_box.c:282:13: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). int l = strlen(input_box->history->data); data/mlv-3.1.0/MLV/input_box.c:467:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy( message_before_input_box, message, input_box->positionCursor ); data/mlv-3.1.0/MLV/input_box.c:555:50: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). input_box->informativeMessage = MLV_MALLOC( (strlen(informativeMessage)+1), char ); data/mlv-3.1.0/MLV/input_box.c:712:50: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). input_box->informativeMessage = MLV_MALLOC( (strlen(message)+1), char ); data/mlv-3.1.0/MLV/input_box.c:775:13: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if( strlen(dst) >= strlen(src) ){ data/mlv-3.1.0/MLV/input_box.c:775:28: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if( strlen(dst) >= strlen(src) ){ data/mlv-3.1.0/MLV/input_box.c:779:53: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). input_box->history->data = MLV_MALLOC( (strlen(src) + 1), char ); data/mlv-3.1.0/MLV/input_box.c:789:33: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). input_box->positionCursor = strlen(input_box->history->data); data/mlv-3.1.0/MLV/input_box.c:837:37: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if( input_box->positionCursor < strlen( input_box->history->data ) ){ data/mlv-3.1.0/MLV/key.c:67:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t l = strlen( text ); data/mlv-3.1.0/MLV/key.c:69:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy( text_copy, text, l+1); data/mlv-3.1.0/MLV/keyboard.c:1396:24: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). result = MLV_MALLOC( strlen(text)+1, char ); data/mlv-3.1.0/MLV/keyboard.c:1405:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_NONE" ); data/mlv-3.1.0/MLV/keyboard.c:1412:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_LSHIFT" ); data/mlv-3.1.0/MLV/keyboard.c:1419:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_RSHIFT" ); data/mlv-3.1.0/MLV/keyboard.c:1426:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_LCTRL" ); data/mlv-3.1.0/MLV/keyboard.c:1433:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_RCTRL" ); data/mlv-3.1.0/MLV/keyboard.c:1440:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_LALT" ); data/mlv-3.1.0/MLV/keyboard.c:1447:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_RALT" ); data/mlv-3.1.0/MLV/keyboard.c:1454:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_LMETA" ); data/mlv-3.1.0/MLV/keyboard.c:1461:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_RMETA" ); data/mlv-3.1.0/MLV/keyboard.c:1468:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_NUM" ); data/mlv-3.1.0/MLV/keyboard.c:1475:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_CAPS" ); data/mlv-3.1.0/MLV/keyboard.c:1482:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_MODE" ); data/mlv-3.1.0/MLV/keyboard.c:1489:16: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). text_size += strlen( "MLV_KEYBOARD_KMOD_RESERVED" ); data/mlv-3.1.0/MLV/text.c:96:6: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if( strlen( complete_text ) ){ data/mlv-3.1.0/MLV/text.c:171:6: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if( strlen( message ) ){ data/mlv-3.1.0/MLV/text.c:377:36: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). char* copy = (char*) MLV_MALLOC( (strlen(message)+1), char ); data/mlv-3.1.0/MLV/text.c:378:17: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). snprintf(copy, strlen(message)+1, "%s", message); data/mlv-3.1.0/MLV/text.c:545:36: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). char* copy = (char*) MLV_MALLOC( (strlen(complete_message)+1), char ); data/mlv-3.1.0/MLV/text.c:546:17: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). snprintf(copy, strlen(complete_message)+1, "%s", complete_message); data/mlv-3.1.0/MLV/text.c:667:36: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). char* copy = (char*) MLV_MALLOC( (strlen(message)+1), char ); data/mlv-3.1.0/MLV/text.c:668:17: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). snprintf(copy, strlen(message)+1, "%s", message); ANALYSIS SUMMARY: Hits = 75 Lines analyzed = 35117 in approximately 0.88 seconds (40062 lines/second) Physical Source Lines of Code (SLOC) = 18985 Hits@level = [0] 98 [1] 38 [2] 27 [3] 5 [4] 5 [5] 0 Hits@level+ = [0+] 173 [1+] 75 [2+] 37 [3+] 10 [4+] 5 [5+] 0 Hits/KSLOC@level+ = [0+] 9.11246 [1+] 3.95049 [2+] 1.94891 [3+] 0.526732 [4+] 0.263366 [5+] 0 Dot directories skipped = 1 (--followdotdir overrides) Minimum risk level = 1 Not every hit is necessarily a security vulnerability. There may be other security vulnerabilities; review your code! See 'Secure Programming HOWTO' (https://dwheeler.com/secure-programs) for more information.