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/unison-2.48-2.48.4/bytearray_stubs.c Examining data/unison-2.48-2.48.4/fsmonitor/linux/inotify_stubs.c Examining data/unison-2.48-2.48.4/fsmonitor/windows/shortnames_stubs.c Examining data/unison-2.48-2.48.4/lwt/lwt_unix_stubs.c Examining data/unison-2.48-2.48.4/osxsupport.c Examining data/unison-2.48-2.48.4/pty.c Examining data/unison-2.48-2.48.4/system/system_win_stubs.c Examining data/unison-2.48-2.48.4/uimac14/Bridge.h Examining data/unison-2.48-2.48.4/uimac14/ColorGradientView.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Headers/Growl.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Headers/GrowlApplicationBridge-Carbon.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Headers/GrowlApplicationBridge.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Headers/GrowlDefines.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Versions/A/Headers/Growl.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Versions/A/Headers/GrowlDefines.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Versions/Current/Headers/Growl.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Versions/Current/Headers/GrowlApplicationBridge-Carbon.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Versions/Current/Headers/GrowlApplicationBridge.h Examining data/unison-2.48-2.48.4/uimac14/Frameworks/Growl.framework/Versions/Current/Headers/GrowlDefines.h Examining data/unison-2.48-2.48.4/uimac14/ImageAndTextCell.h Examining data/unison-2.48-2.48.4/uimac14/MyController.h Examining data/unison-2.48-2.48.4/uimac14/NotificationController.h Examining data/unison-2.48-2.48.4/uimac14/PreferencesController.h Examining data/unison-2.48-2.48.4/uimac14/ProfileController.h Examining data/unison-2.48-2.48.4/uimac14/ProfileTableView.h Examining data/unison-2.48-2.48.4/uimac14/ProgressCell.h Examining data/unison-2.48-2.48.4/uimac14/ReconItem.h Examining data/unison-2.48-2.48.4/uimac14/ReconTableView.h Examining data/unison-2.48-2.48.4/uimac14/UnisonToolbar.h Examining data/unison-2.48-2.48.4/uimac14/cltool.c Examining data/unison-2.48-2.48.4/uimac14/ssselectabletoolbar/SSSelectableToolbar.h Examining data/unison-2.48-2.48.4/uimac14/ssselectabletoolbar/SSSelectableToolbarItem.h Examining data/unison-2.48-2.48.4/uimacnew/Bridge.h Examining data/unison-2.48-2.48.4/uimacnew/Growl.framework/Versions/A/Headers/Growl.h Examining data/unison-2.48-2.48.4/uimacnew/Growl.framework/Versions/A/Headers/GrowlApplicationBridge-Carbon.h Examining data/unison-2.48-2.48.4/uimacnew/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h Examining data/unison-2.48-2.48.4/uimacnew/Growl.framework/Versions/A/Headers/GrowlDefines.h Examining data/unison-2.48-2.48.4/uimacnew/ImageAndTextCell.h Examining data/unison-2.48-2.48.4/uimacnew/MyController.h Examining data/unison-2.48-2.48.4/uimacnew/NotificationController.h Examining data/unison-2.48-2.48.4/uimacnew/PreferencesController.h Examining data/unison-2.48-2.48.4/uimacnew/ProfileController.h Examining data/unison-2.48-2.48.4/uimacnew/ProfileTableView.h Examining data/unison-2.48-2.48.4/uimacnew/ProgressCell.h Examining data/unison-2.48-2.48.4/uimacnew/ReconItem.h Examining data/unison-2.48-2.48.4/uimacnew/ReconTableView.h Examining data/unison-2.48-2.48.4/uimacnew/UnisonToolbar.h Examining data/unison-2.48-2.48.4/uimacnew/cltool.c Examining data/unison-2.48-2.48.4/winmain.c FINAL RESULTS: data/unison-2.48-2.48.4/osxsupport.c:118:9: [5] (race) chmod: This accepts filename arguments; if an attacker can move those files, a race condition results. (CWE-362). Use fchmod( ) instead. r = chmod(String_val(path), st.st_mode | S_IWUSR); data/unison-2.48-2.48.4/osxsupport.c:124:5: [5] (race) chmod: This accepts filename arguments; if an attacker can move those files, a race condition results. (CWE-362). Use fchmod( ) instead. chmod(String_val(path), st.st_mode); data/unison-2.48-2.48.4/uimac14/cltool.c:52:3: [4] (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). strcat(buf,EXECPATH); data/unison-2.48-2.48.4/uimac14/cltool.c:62:3: [4] (shell) execv: 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. execv(argv[0],argv); data/unison-2.48-2.48.4/uimacnew/cltool.c:52:3: [4] (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). strcat(buf,EXECPATH); data/unison-2.48-2.48.4/uimacnew/cltool.c:62:3: [4] (shell) execv: 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. execv(argv[0],argv); data/unison-2.48-2.48.4/bytearray_stubs.c:34: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(dest, src, Long_val(l)); data/unison-2.48-2.48.4/bytearray_stubs.c:43: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(dest, src, Long_val(l)); data/unison-2.48-2.48.4/fsmonitor/linux/inotify_stubs.c:132:2: [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(&ev, String_val(buf), sizeof(struct inotify_event)); data/unison-2.48-2.48.4/lwt/lwt_unix_stubs.c:53: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(dest, src, Long_val(l)); data/unison-2.48-2.48.4/lwt/lwt_unix_stubs.c:62: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(dest, src, Long_val(l)); data/unison-2.48-2.48.4/lwt/lwt_unix_stubs.c:73:8: [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. static char * action_name[5] = { data/unison-2.48-2.48.4/lwt/lwt_unix_stubs.c:120:7: [2] (buffer) CopyMemory: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. CopyMemory (queue, complQueue, complQueueSize * sizeof(completionInfo)); data/unison-2.48-2.48.4/lwt/lwt_unix_stubs.c:487: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(name, "\\\\.\\Pipe\\UnisonAnonPipe.%08lx.%08lx", data/unison-2.48-2.48.4/osxsupport.c:39: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 finderInfo [32]; data/unison-2.48-2.48.4/osxsupport.c:68: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 (String_val (fInfo), attrBuf.finderInfo, 32); data/unison-2.48-2.48.4/osxsupport.c:96: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 finderInfo [32]; data/unison-2.48-2.48.4/osxsupport.c:107: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 (attrBuf.finderInfo, String_val (fInfo), 32); data/unison-2.48-2.48.4/system/system_win_stubs.c:314:3: [2] (buffer) wchar_t: 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. wchar_t s[NT_MAX_PATH]; data/unison-2.48-2.48.4/system/system_win_stubs.c:452:3: [2] (buffer) wchar_t: 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. wchar_t fullname [MAX_PATH]; data/unison-2.48-2.48.4/uimac14/cltool.c:29: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 buf[BUFSIZE]; data/unison-2.48-2.48.4/uimacnew/cltool.c:29: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 buf[BUFSIZE]; data/unison-2.48-2.48.4/fsmonitor/windows/shortnames_stubs.c:35:13: [1] (buffer) wcslen: 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 = 2 * wcslen(s) + 2; /* NULL character included */ data/unison-2.48-2.48.4/system/system_win_stubs.c:31:13: [1] (buffer) wcslen: 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 = 2 * wcslen(s) + 2; /* NULL character included */ data/unison-2.48-2.48.4/uimac14/cltool.c:47:9: [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(buf); data/unison-2.48-2.48.4/uimac14/cltool.c:48: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 (len + strlen(EXECPATH) + 1 > BUFSIZE) { data/unison-2.48-2.48.4/uimacnew/cltool.c:47:9: [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(buf); data/unison-2.48-2.48.4/uimacnew/cltool.c:48: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 (len + strlen(EXECPATH) + 1 > BUFSIZE) { ANALYSIS SUMMARY: Hits = 28 Lines analyzed = 9618 in approximately 0.38 seconds (24989 lines/second) Physical Source Lines of Code (SLOC) = 3017 Hits@level = [0] 37 [1] 6 [2] 16 [3] 0 [4] 4 [5] 2 Hits@level+ = [0+] 65 [1+] 28 [2+] 22 [3+] 6 [4+] 6 [5+] 2 Hits/KSLOC@level+ = [0+] 21.5446 [1+] 9.28074 [2+] 7.29201 [3+] 1.98873 [4+] 1.98873 [5+] 0.66291 Symlinks skipped = 3 (--allowlink overrides but see doc for security issue) 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.