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/ser-player-1.7.3/src/pipp_buffer.h Examining data/ser-player-1.7.3/src/histogram_dialog.h Examining data/ser-player-1.7.3/src/utf8_validator.cpp Examining data/ser-player-1.7.3/src/tiff_write.cpp Examining data/ser-player-1.7.3/src/png_write.h Examining data/ser-player-1.7.3/src/icon_groupbox.cpp Examining data/ser-player-1.7.3/src/main.cpp Examining data/ser-player-1.7.3/src/neuquant.c Examining data/ser-player-1.7.3/src/pipp_ser_write.cpp Examining data/ser-player-1.7.3/src/pipp_timestamp.cpp Examining data/ser-player-1.7.3/src/pipp_utf8_bsd.cpp Examining data/ser-player-1.7.3/src/pipp_utf8.h Examining data/ser-player-1.7.3/src/header_details_dialog.cpp Examining data/ser-player-1.7.3/src/histogram_thread.cpp Examining data/ser-player-1.7.3/src/application.cpp Examining data/ser-player-1.7.3/src/application.h Examining data/ser-player-1.7.3/src/pipp_avi_write.cpp Examining data/ser-player-1.7.3/src/pipp_avi_write_dib.cpp Examining data/ser-player-1.7.3/src/pipp_avi_write_dib.h Examining data/ser-player-1.7.3/src/histogram_thread.h Examining data/ser-player-1.7.3/src/lzw_compressor.h Examining data/ser-player-1.7.3/src/save_frames_progress_dialog.cpp Examining data/ser-player-1.7.3/src/save_frames_dialog.h Examining data/ser-player-1.7.3/src/playback_controls_dialog.cpp Examining data/ser-player-1.7.3/src/image.cpp Examining data/ser-player-1.7.3/src/pipp_ser_write.h Examining data/ser-player-1.7.3/src/pipp_ser.cpp Examining data/ser-player-1.7.3/src/image.h Examining data/ser-player-1.7.3/src/playback_controls_dialog.h Examining data/ser-player-1.7.3/src/tiff_write.h Examining data/ser-player-1.7.3/src/image_widget.cpp Examining data/ser-player-1.7.3/src/playback_controls_widget.h Examining data/ser-player-1.7.3/src/pipp_avi_write.h Examining data/ser-player-1.7.3/src/frame_slider.h Examining data/ser-player-1.7.3/src/image_widget.h Examining data/ser-player-1.7.3/src/processing_options_dialog.cpp Examining data/ser-player-1.7.3/src/pipp_utf8.cpp Examining data/ser-player-1.7.3/src/pipp_utf8_linux.cpp Examining data/ser-player-1.7.3/src/pipp_ser.h Examining data/ser-player-1.7.3/src/markers_dialog.h Examining data/ser-player-1.7.3/src/persistent_data.h Examining data/ser-player-1.7.3/src/histogram_dialog.cpp Examining data/ser-player-1.7.3/src/pipp_utf8_osx.cpp Examining data/ser-player-1.7.3/src/ser_player.cpp Examining data/ser-player-1.7.3/src/icon_groupbox.h Examining data/ser-player-1.7.3/src/png_write.cpp Examining data/ser-player-1.7.3/src/markers_dialog.cpp Examining data/ser-player-1.7.3/src/header_details_dialog.h Examining data/ser-player-1.7.3/src/selection_box_dialog.h Examining data/ser-player-1.7.3/src/ser_player.h Examining data/ser-player-1.7.3/src/gif_write.h Examining data/ser-player-1.7.3/src/save_frames_dialog.cpp Examining data/ser-player-1.7.3/src/processing_options_dialog.h Examining data/ser-player-1.7.3/src/selection_box_dialog.cpp Examining data/ser-player-1.7.3/src/pnglibconf.h Examining data/ser-player-1.7.3/src/new_version_checker.cpp Examining data/ser-player-1.7.3/src/save_frames_progress_dialog.h Examining data/ser-player-1.7.3/src/pipp_timestamp.h Examining data/ser-player-1.7.3/src/neuquant.h Examining data/ser-player-1.7.3/src/gif_write.cpp Examining data/ser-player-1.7.3/src/utf8_validator.h Examining data/ser-player-1.7.3/src/playback_controls_widget.cpp Examining data/ser-player-1.7.3/src/persistent_data.cpp Examining data/ser-player-1.7.3/src/new_version_checker.h Examining data/ser-player-1.7.3/src/frame_slider.cpp Examining data/ser-player-1.7.3/src/pipp_video_write.h Examining data/ser-player-1.7.3/src/lzw_compressor.cpp Examining data/ser-player-1.7.3/src/pipp_buffer.cpp FINAL RESULTS: data/ser-player-1.7.3/src/application.cpp:45:27: [4] (shell) system: This causes a new program to execute and is difficult to use safely (CWE-78). try using a library call that implements the same functionality if available. locale = QLocale::system().name(); data/ser-player-1.7.3/src/pipp_avi_write.cpp:516: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(mp_filename.get(), filename); data/ser-player-1.7.3/src/pipp_avi_write.cpp:526:9: [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(mp_extension.get(), extension); // Copy extension data/ser-player-1.7.3/src/pipp_avi_write.cpp:655:9: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(p_split_filename.get(), "%s%s", mp_filename.get(), mp_extension.get()); data/ser-player-1.7.3/src/pipp_avi_write.cpp:658:9: [4] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. sprintf(p_split_filename.get(), "%s_%02d%s", mp_filename.get(), m_split_count, mp_extension.get()); data/ser-player-1.7.3/src/pipp_ser_write.cpp:66: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(mp_index_filename.get(), filename.toUtf8().constData()); data/ser-player-1.7.3/src/pipp_timestamp.cpp:239: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(temp, filepath.c_str()); data/ser-player-1.7.3/src/histogram_thread.cpp:65: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(mp_buffer.get(), p_image->get_p_buffer(), m_buffer_size); data/ser-player-1.7.3/src/image.cpp:548: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_new_buffer, mp_buffer, m_width * m_height * 3 * sizeof(T)); // Copy current data into new buffer data/ser-player-1.7.3/src/image.cpp:886:4: [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_wr_data, mp_buffer, line_length * m_height * sizeof(T)); data/ser-player-1.7.3/src/image.cpp:921: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(p_wr_data, p_rd_data, line_length * sizeof(T)); data/ser-player-1.7.3/src/pipp_avi_write.cpp:523:9: [2] (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). Risk is low because the source is a constant string. strcpy(mp_extension.get(), ".avi"); // Copy extension data/ser-player-1.7.3/src/pipp_avi_write.h:76:17: [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 chr[4]; data/ser-player-1.7.3/src/pipp_avi_write.h:81:17: [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 chr[4]; data/ser-player-1.7.3/src/pipp_avi_write.h:90:17: [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 chr[4]; data/ser-player-1.7.3/src/pipp_avi_write.h:116:17: [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 chr[4]; data/ser-player-1.7.3/src/pipp_avi_write.h:120:17: [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 chr[4]; data/ser-player-1.7.3/src/pipp_avi_write.h:151:17: [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 chr[4]; data/ser-player-1.7.3/src/pipp_avi_write.h:165:17: [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 chr[4]; data/ser-player-1.7.3/src/pipp_avi_write.h:181:17: [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 chr[4]; data/ser-player-1.7.3/src/pipp_avi_write.h:210:17: [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 chr[4]; data/ser-player-1.7.3/src/pipp_avi_write_dib.cpp:98:21: [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(dst_ptr, src_ptr, line_length); data/ser-player-1.7.3/src/pipp_ser.cpp:37:21: [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). int32_t c_pipp_ser::open( data/ser-player-1.7.3/src/pipp_ser.cpp:84:5: [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 file_id[15]; data/ser-player-1.7.3/src/pipp_ser.cpp:368:5: [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 file_id[15]; data/ser-player-1.7.3/src/pipp_ser.cpp:469:5: [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 temp[41]; data/ser-player-1.7.3/src/pipp_ser.cpp:470: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(temp, m_header.observer, 40); data/ser-player-1.7.3/src/pipp_ser.cpp:484:5: [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 temp[41]; data/ser-player-1.7.3/src/pipp_ser.cpp: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(temp, m_header.instrument, 40); data/ser-player-1.7.3/src/pipp_ser.cpp:499:5: [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 temp[41]; data/ser-player-1.7.3/src/pipp_ser.cpp:500: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(temp, m_header.telescope, 40); data/ser-player-1.7.3/src/pipp_ser.cpp:1177:17: [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(write_ptr, read_ptr, line_size); data/ser-player-1.7.3/src/pipp_ser.cpp:1198:17: [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(write_ptr, read_ptr, m_header.image_width); data/ser-player-1.7.3/src/pipp_ser.h:56:13: [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 observer[40]; // Name of observer data/ser-player-1.7.3/src/pipp_ser.h:57:13: [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 instrument[40]; // Name of camera data/ser-player-1.7.3/src/pipp_ser.h:58:13: [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 telescope[40]; // Name of telescope data/ser-player-1.7.3/src/pipp_ser.h:132:17: [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). int32_t open( data/ser-player-1.7.3/src/pipp_ser_write.cpp:67:5: [2] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). Risk is low because the source is a constant string. strcat(mp_index_filename.get(), ".idx"); data/ser-player-1.7.3/src/pipp_ser_write.cpp:127:13: [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(write_ptr, read_ptr, m_width); data/ser-player-1.7.3/src/pipp_ser_write.cpp:137:13: [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(write_ptr, read_ptr, m_width * 2); data/ser-player-1.7.3/src/pipp_ser_write.cpp:147:13: [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(write_ptr, read_ptr, m_width * 3); data/ser-player-1.7.3/src/pipp_ser_write.cpp:157:13: [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(write_ptr, read_ptr, m_width * 3 * 2); data/ser-player-1.7.3/src/pipp_ser_write.cpp:221: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(m_header.observer, observer.toUtf8().constData(), 40); data/ser-player-1.7.3/src/pipp_ser_write.cpp:223: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(m_header.instrument, instrument.toUtf8().constData(), 40); data/ser-player-1.7.3/src/pipp_ser_write.cpp:225: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(m_header.telescope, telescope.toUtf8().constData(), 40); data/ser-player-1.7.3/src/pipp_ser_write.h:37:13: [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 observer[40]; // Name of observer data/ser-player-1.7.3/src/pipp_ser_write.h:38:13: [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 instrument[40]; // Name of camera data/ser-player-1.7.3/src/pipp_ser_write.h:39:13: [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 telescope[40]; // Name of telescope data/ser-player-1.7.3/src/pipp_timestamp.cpp:236:5: [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 temp[1024]; data/ser-player-1.7.3/src/pipp_timestamp.cpp:345:5: [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 new_mask[1024]; data/ser-player-1.7.3/src/pipp_timestamp.cpp:684:5: [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(winjupos_friendly_prefix, data/ser-player-1.7.3/src/pipp_utf8.cpp:38:18: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). int length = MultiByteToWideChar(CP_UTF8, 0, filename.c_str(), -1, 0, 0); data/ser-player-1.7.3/src/pipp_utf8.cpp:40:5: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). MultiByteToWideChar(CP_UTF8, 0, filename.c_str(), -1, w_fname, length); data/ser-player-1.7.3/src/pipp_utf8.cpp:43:14: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). length = MultiByteToWideChar(CP_UTF8, 0, mode.c_str(), -1, 0, 0); data/ser-player-1.7.3/src/pipp_utf8.cpp:45:5: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). MultiByteToWideChar(CP_UTF8, 0, mode.c_str(), -1, w_mode, length); data/ser-player-1.7.3/src/pipp_utf8.cpp:68:14: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). length = MultiByteToWideChar(CP_UTF8, 0, oldname.c_str(), -1, 0, 0); data/ser-player-1.7.3/src/pipp_utf8.cpp:70:5: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). MultiByteToWideChar(CP_UTF8, 0, oldname.c_str(), -1, w_oldname, length); data/ser-player-1.7.3/src/pipp_utf8.cpp:73:14: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). length = MultiByteToWideChar(CP_UTF8, 0, newname.c_str(), -1, 0, 0); data/ser-player-1.7.3/src/pipp_utf8.cpp:75:5: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). MultiByteToWideChar(CP_UTF8, 0, newname.c_str(), -1, w_newname, length); data/ser-player-1.7.3/src/pipp_utf8.cpp:97:14: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). length = MultiByteToWideChar(CP_UTF8, 0, path.c_str(), -1, 0, 0); data/ser-player-1.7.3/src/pipp_utf8.cpp:99:5: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). MultiByteToWideChar(CP_UTF8, 0, path.c_str(), -1, w_path, length); data/ser-player-1.7.3/src/pipp_utf8.cpp:119:14: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). length = MultiByteToWideChar(CP_UTF8, 0, oldname.c_str(), -1, 0, 0); data/ser-player-1.7.3/src/pipp_utf8.cpp:121:5: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). MultiByteToWideChar(CP_UTF8, 0, oldname.c_str(), -1, w_oldname, length); data/ser-player-1.7.3/src/pipp_utf8.cpp:124:14: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). length = MultiByteToWideChar(CP_UTF8, 0, newname.c_str(), -1, 0, 0); data/ser-player-1.7.3/src/pipp_utf8.cpp:126:5: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). MultiByteToWideChar(CP_UTF8, 0, newname.c_str(), -1, w_newname, length); data/ser-player-1.7.3/src/pipp_utf8.cpp:150:14: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). length = MultiByteToWideChar(CP_UTF8, 0, path.c_str(), -1, 0, 0); data/ser-player-1.7.3/src/pipp_utf8.cpp:152:5: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). MultiByteToWideChar(CP_UTF8, 0, path.c_str(), -1, w_path, length); data/ser-player-1.7.3/src/pipp_utf8.cpp:180:14: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). length = MultiByteToWideChar(CP_UTF8, 0, path.c_str(), -1, 0, 0); data/ser-player-1.7.3/src/pipp_utf8.cpp:182:5: [2] (buffer) MultiByteToWideChar: Requires maximum length in CHARACTERS, not bytes (CWE-120). MultiByteToWideChar(CP_UTF8, 0, path.c_str(), -1, w_path, length); data/ser-player-1.7.3/src/pipp_utf8_bsd.cpp:41:17: [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 *ret = fopen(filename.c_str(), mode.c_str()); data/ser-player-1.7.3/src/pipp_utf8_bsd.cpp:85:15: [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). read_fd = open(oldname.c_str(), O_RDONLY); data/ser-player-1.7.3/src/pipp_utf8_bsd.cpp:95:16: [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). write_fd = open(newname.c_str(), O_WRONLY | O_CREAT, stat_buf.st_mode); data/ser-player-1.7.3/src/pipp_utf8_linux.cpp:82:15: [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). read_fd = open(oldname.c_str(), O_RDONLY); data/ser-player-1.7.3/src/pipp_utf8_linux.cpp:92:16: [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). write_fd = open(newname.c_str(), O_WRONLY | O_CREAT, stat_buf.st_mode); data/ser-player-1.7.3/src/pipp_utf8_osx.cpp:39:17: [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 *ret = fopen(filename.c_str(), mode.c_str()); data/ser-player-1.7.3/src/ser_player.cpp:1470:40: [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). if (temp_html_file.open()) { data/ser-player-1.7.3/src/ser_player.cpp:1803:34: [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). file.open(QIODevice::WriteOnly); data/ser-player-1.7.3/src/ser_player.cpp:2013:35: [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). m_total_frames = mp_ser_file->open(filename.toUtf8().constData(), 0, 0); data/ser-player-1.7.3/src/ser_player.cpp:2039:43: [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). m_total_frames = mp_ser_file->open(filename.toUtf8().constData(), 0, 0); data/ser-player-1.7.3/src/gif_write.cpp:85:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy((char *)m_comment_extension.m_comment_data, GIF_COMMENT_STRING, sizeof(GIF_COMMENT_STRING) - 1); data/ser-player-1.7.3/src/gif_write.cpp:1100:21: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. mismatch |= abs((int)(*p_current_data++) - (*p_last_data++)) > m_unchanged_border_tolerance; data/ser-player-1.7.3/src/gif_write.cpp:1104:21: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (mismatch) { data/ser-player-1.7.3/src/gif_write.cpp:1123:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. mismatch |= abs((int)(*p_current_data++) - (*p_last_data++)) > m_unchanged_border_tolerance; data/ser-player-1.7.3/src/gif_write.cpp:1127:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (mismatch) { data/ser-player-1.7.3/src/gif_write.cpp:1138:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. mismatch |= abs((int)(*p_current_data) - (*p_last_data)) > m_unchanged_border_tolerance; data/ser-player-1.7.3/src/gif_write.cpp:1144:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (mismatch) { data/ser-player-1.7.3/src/gif_write.cpp:1155:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. mismatch |= abs((int)(*p_current_data) - (*p_last_data)) > m_unchanged_border_tolerance; data/ser-player-1.7.3/src/gif_write.cpp:1161:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (mismatch) { data/ser-player-1.7.3/src/gif_write.cpp:1182:21: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. mismatch |= diff > m_unchanged_border_tolerance; data/ser-player-1.7.3/src/gif_write.cpp:1186:21: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (mismatch) { data/ser-player-1.7.3/src/gif_write.cpp:1208:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. mismatch |= diff > m_unchanged_border_tolerance; data/ser-player-1.7.3/src/gif_write.cpp:1212:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (mismatch) { data/ser-player-1.7.3/src/gif_write.cpp:1227:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. mismatch |= diff > m_unchanged_border_tolerance; data/ser-player-1.7.3/src/gif_write.cpp:1233:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (mismatch) { data/ser-player-1.7.3/src/gif_write.cpp:1247:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. mismatch |= diff > m_unchanged_border_tolerance; data/ser-player-1.7.3/src/gif_write.cpp:1253:25: [1] (buffer) mismatch: Function does not check the second iterator for over-read conditions (CWE-126). This function is often discouraged by most C++ coding standards in favor of its safer alternatives provided since C++14. Consider using a form of this function that checks the second iterator before potentially overflowing it. if (mismatch) { data/ser-player-1.7.3/src/pipp_avi_write.cpp:514:32: [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). mp_filename.reset(new char[strlen(filename) + 1]); data/ser-player-1.7.3/src/pipp_avi_write.cpp:522: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). mp_extension.reset(new char[strlen(".avi") + 1]); data/ser-player-1.7.3/src/pipp_avi_write.cpp:525: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). mp_extension.reset(new char[strlen(extension) + 1]); data/ser-player-1.7.3/src/pipp_avi_write.cpp:652:55: [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). std::unique_ptr<char[]> p_split_filename(new char[strlen(mp_filename.get()) + 3 + strlen(mp_extension.get()) + 1]); data/ser-player-1.7.3/src/pipp_avi_write.cpp:652:87: [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). std::unique_ptr<char[]> p_split_filename(new char[strlen(mp_filename.get()) + 3 + strlen(mp_extension.get()) + 1]); data/ser-player-1.7.3/src/pipp_timestamp.cpp:242:30: [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). for (uint32_t x = 0; x < strlen(temp); x++) { data/ser-player-1.7.3/src/pipp_timestamp.cpp:268:30: [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). for (uint32_t x = 0; x < strlen(mask); x++) { data/ser-player-1.7.3/src/pipp_timestamp.cpp:375: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(char_ptr) < strlen(new_mask)) { data/ser-player-1.7.3/src/pipp_timestamp.cpp:375:32: [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(char_ptr) < strlen(new_mask)) { data/ser-player-1.7.3/src/pipp_timestamp.cpp:383:34: [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). for (uint32_t x = 0; x < strlen(char_ptr) - strlen(new_mask); x++) { data/ser-player-1.7.3/src/pipp_timestamp.cpp:383: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). for (uint32_t x = 0; x < strlen(char_ptr) - strlen(new_mask); x++) { data/ser-player-1.7.3/src/pipp_timestamp.cpp:385:38: [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). for (uint32_t y = 0; y < strlen(new_mask); y++) { data/ser-player-1.7.3/src/pipp_timestamp.cpp:530:30: [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). for (uint32_t x = 0; x < strlen(new_mask); x++) { data/ser-player-1.7.3/src/tiff_write.cpp:294:30: [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). cerr.write(filename, strlen(filename)); data/ser-player-1.7.3/src/tiff_write.cpp:450:30: [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). cerr.write(filename, strlen(filename)); ANALYSIS SUMMARY: Hits = 111 Lines analyzed = 21113 in approximately 0.48 seconds (44118 lines/second) Physical Source Lines of Code (SLOC) = 14230 Hits@level = [0] 86 [1] 32 [2] 72 [3] 0 [4] 7 [5] 0 Hits@level+ = [0+] 197 [1+] 111 [2+] 79 [3+] 7 [4+] 7 [5+] 0 Hits/KSLOC@level+ = [0+] 13.844 [1+] 7.80042 [2+] 5.55165 [3+] 0.491918 [4+] 0.491918 [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.