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/liboggplay-0.2.1~git20091227/win32/config_win32.h Examining data/liboggplay-0.2.1~git20091227/include/oggplay/oggplay_seek.h Examining data/liboggplay-0.2.1~git20091227/include/oggplay/oggplay_tools.h Examining data/liboggplay-0.2.1~git20091227/include/oggplay/oggplay_enums.h Examining data/liboggplay-0.2.1~git20091227/include/oggplay/oggplay_reader.h Examining data/liboggplay-0.2.1~git20091227/include/oggplay/oggplay_callback_info.h Examining data/liboggplay-0.2.1~git20091227/include/oggplay/oggplay_query.h Examining data/liboggplay-0.2.1~git20091227/include/oggplay/oggplay.h Examining data/liboggplay-0.2.1~git20091227/src/examples/dump-all-streams.c Examining data/liboggplay-0.2.1~git20091227/src/examples/get-stream-info.c Examining data/liboggplay-0.2.1~git20091227/src/examples/glut-player.c Examining data/liboggplay-0.2.1~git20091227/src/tests/noop.c Examining data/liboggplay-0.2.1~git20091227/src/tests/oggplay_tests.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_tcp_reader.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/x86/oggplay_yuv2rgb_x86.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/x86/yuv2rgb_x86_vs.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/x86/yuv2rgb_x86.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/cpu.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_callback.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_seek.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/std_semaphore.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_file_reader.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_buffer.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_file_reader.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/ppc/oggplay_yuv2rgb_altivec.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_query.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_yuv2rgb.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_data.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_callback_info.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_tools.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_yuv2rgb_template.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_tcp_reader.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/cpu.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_private.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_buffer.h Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_data.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay.c Examining data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_callback.c Examining data/liboggplay-0.2.1~git20091227/src/tools/oggplay-dump-first-frame.c Examining data/liboggplay-0.2.1~git20091227/src/tools/oggplay-info.c FINAL RESULTS: data/liboggplay-0.2.1~git20091227/win32/config_win32.h:68:9: [4] (format) snprintf: If format strings can be influenced by an attacker, they can be exploited, and note that sprintf variations do not always \0-terminate (CWE-134). Use a constant for the format specification. #define snprintf _snprintf data/liboggplay-0.2.1~git20091227/win32/config_win32.h:68:18: [4] (format) _snprintf: If format strings can be influenced by an attacker, they can be exploited, and note that sprintf variations do not always \0-terminate (CWE-134). Use a constant for the format specification. #define snprintf _snprintf data/liboggplay-0.2.1~git20091227/src/examples/dump-all-streams.c:15:3: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char fname[256]; data/liboggplay-0.2.1~git20091227/src/examples/dump-all-streams.c:26:3: [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. sprintf(fname, "y_frame%d", frame); data/liboggplay-0.2.1~git20091227/src/examples/dump-all-streams.c:27:7: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). f = fopen(fname, "w"); data/liboggplay-0.2.1~git20091227/src/examples/dump-all-streams.c:41:3: [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. sprintf(fname, "u_frame%d", frame); data/liboggplay-0.2.1~git20091227/src/examples/dump-all-streams.c:42:7: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). f = fopen(fname, "w"); data/liboggplay-0.2.1~git20091227/src/examples/dump-all-streams.c:43:3: [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. sprintf(fname, "v_frame%d", frame); data/liboggplay-0.2.1~git20091227/src/examples/dump-all-streams.c:44:7: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). g = fopen(fname, "w"); data/liboggplay-0.2.1~git20091227/src/examples/glut-player.c:184:7: [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(dest, src, overlay_data->width*4); data/liboggplay-0.2.1~git20091227/src/examples/glut-player.c:248:12: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). snd_fd = open("/dev/dsp", O_WRONLY, 0); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_data.c:343:3: [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 (record->data, data, samples_size); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_data.c:387:3: [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(record->data, data, size); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_data.c:485:5: [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(p, q, decode->y_width); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_data.c:496:5: [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(p, q, decode->uv_width); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_data.c:497:5: [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(p2, q2, decode->uv_width); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_data.c:621:5: [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(record->data, ev->text, ev->len0); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_file_reader.c:56:14: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). me->file = fopen(me->file_name, "rb"); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_tcp_reader.c:296:3: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char http_request_header[1024]; data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_tcp_reader.c:371:3: [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(&addr.sin_addr.s_addr, he->h_addr, he->h_length); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_tcp_reader.c:482:25: [2] (tmpfile) tmpfile: Function tmpfile() has a security flaw on some systems (e.g., older System V systems) (CWE-377). me->backing_store = tmpfile(); data/liboggplay-0.2.1~git20091227/src/liboggplay/x86/oggplay_yuv2rgb_x86.c:58:2: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char b[16]; data/liboggplay-0.2.1~git20091227/src/liboggplay/x86/oggplay_yuv2rgb_x86.c:59:11: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. unsigned char ub[16]; data/liboggplay-0.2.1~git20091227/src/tools/oggplay-dump-first-frame.c:19:13: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE *f = fopen("out.rgb", "wb"); data/liboggplay-0.2.1~git20091227/src/tools/oggplay-dump-first-frame.c:47:13: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE *f = fopen("out.y", "wb"); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_tcp_reader.c:397:11: [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). len = strlen(http_request_header); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_tcp_reader.c:434:16: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). nbytes = read(me->socket, (char*)(me->buffer + me->amount_in_memory), data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_tcp_reader.c:507:16: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). nbytes = read(me->socket, me->buffer + me->amount_in_memory, remaining); data/liboggplay-0.2.1~git20091227/src/liboggplay/oggplay_tcp_reader.c:610:7: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). r = read(me->socket, me->buffer + me->amount_in_memory, remaining); data/liboggplay-0.2.1~git20091227/src/tools/oggplay-dump-first-frame.c:118:7: [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(argv[1]) > 7 && (strncmp(argv[1], "http://", 7) == 0)) { ANALYSIS SUMMARY: Hits = 30 Lines analyzed = 10188 in approximately 0.37 seconds (27350 lines/second) Physical Source Lines of Code (SLOC) = 6208 Hits@level = [0] 73 [1] 5 [2] 23 [3] 0 [4] 2 [5] 0 Hits@level+ = [0+] 103 [1+] 30 [2+] 25 [3+] 2 [4+] 2 [5+] 0 Hits/KSLOC@level+ = [0+] 16.5915 [1+] 4.83247 [2+] 4.02706 [3+] 0.322165 [4+] 0.322165 [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.