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/libapache2-mod-rivet-3.2.0/src/librivet/rivetCrypt.c Examining data/libapache2-mod-rivet-3.2.0/src/librivet/rivetPkgInit.c Examining data/libapache2-mod-rivet-3.2.0/src/librivet/rivetList.c Examining data/libapache2-mod-rivet-3.2.0/src/librivet/rivetWWW.c Examining data/libapache2-mod-rivet-3.2.0/src/TclWebcgi.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivet_lazy_mpm.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet.h Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivet_types.h Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/worker_prefork_common.h Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivet_prefork_mpm.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/worker_prefork_common.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivetChannel.h Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivetCore.h Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivetChannel.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_generator.h Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivetCore.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/apache_config.h Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivetInspect.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_common.h Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivet_worker_mpm.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_cache.h Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_generator.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/apache_config.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_common.c Examining data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_cache.c Examining data/libapache2-mod-rivet-3.2.0/src/parser/rivetParser.h Examining data/libapache2-mod-rivet-3.2.0/src/parser/rivetParser.c Examining data/libapache2-mod-rivet-3.2.0/src/parser/parserPkgInit.c Examining data/libapache2-mod-rivet-3.2.0/src/request/apache_request.h Examining data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c Examining data/libapache2-mod-rivet-3.2.0/src/request/apache_multipart_buffer.h Examining data/libapache2-mod-rivet-3.2.0/src/request/apache_multipart_buffer.c Examining data/libapache2-mod-rivet-3.2.0/src/testing.c Examining data/libapache2-mod-rivet-3.2.0/src/TclWeb.h Examining data/libapache2-mod-rivet-3.2.0/src/TclWeb.c Examining data/libapache2-mod-rivet-3.2.0/src/rivet.h FINAL RESULTS: data/libapache2-mod-rivet-3.2.0/src/librivet/rivetCrypt.c:85: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 ( resultBuffer, data ); data/libapache2-mod-rivet-3.2.0/src/librivet/rivetCrypt.c:113: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 ( resultBuffer, data ); data/libapache2-mod-rivet-3.2.0/src/librivet/rivetCrypt.c:128:8: [4] (crypto) crypt: The crypt functions use a poor one-way hashing algorithm; since they only accept passwords of 8 characters or fewer and only a two-byte salt, they are excessively vulnerable to dictionary attacks given today's faster computing equipment (CWE-327). Use a different algorithm, such as SHA-256, with a larger, non-repeating salt. #ifdef crypt data/libapache2-mod-rivet-3.2.0/src/librivet/rivetCrypt.c:140:20: [4] (crypto) crypt: The crypt functions use a poor one-way hashing algorithm; since they only accept passwords of 8 characters or fewer and only a two-byte salt, they are excessively vulnerable to dictionary attacks given today's faster computing equipment (CWE-327). Use a different algorithm, such as SHA-256, with a larger, non-repeating salt. resultBuffer = crypt((const char *)key, (const char *)salt); data/libapache2-mod-rivet-3.2.0/src/librivet/rivetWWW.c:38: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/libapache2-mod-rivet-3.2.0/src/librivet/rivetWWW.c:38: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/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_cache.c:249: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(rivet_interp->objCacheList[rivet_interp->cache_free], hashKey); data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivetCore.c:2031:5: [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. snprintf(buff,SMALL_BUFFER_SIZE,output_format,threadid); data/libapache2-mod-rivet-3.2.0/src/librivet/rivetWWW.c:118: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 buf[3]; data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet.c:386: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 errorbuf[ERRORBUF_SZ]; data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet.c:404:9: [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 errorbuf[ERRORBUF_SZ]; data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_common.c:784: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 chdir_buf[HUGE_STRING_LEN]; data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_common.c:794: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(chdir_buf, file, x - file); data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivetCore.c:278:9: [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 apr_error_message[RIVET_MSG_BUFFER_SIZE]; data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivetCore.c:1986: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 buff[SMALL_BUFFER_SIZE]; data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivet_worker_mpm.c:380: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 errorbuf[RIVET_MSG_BUFFER_SIZE]; data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivet_worker_mpm.c:477:25: [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 errorbuf[RIVET_MSG_BUFFER_SIZE]; data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivet_worker_mpm.c:600:9: [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 errorbuf[RIVET_MSG_BUFFER_SIZE]; data/libapache2-mod-rivet-3.2.0/src/request/apache_multipart_buffer.c:275: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(buf, self->buf_begin, len); data/libapache2-mod-rivet-3.2.0/src/request/apache_multipart_buffer.c:297: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 buf[FILLUNIT], *out = ""; data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:50:9: [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 buff[HUGE_STRING_LEN]; data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:73: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((char*)*rbuf + rpos, buff, rsize); data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:254: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 xstr[5]; data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:528: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 error[1024]; data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:566:9: [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 buff[FILLUNIT]; data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:683: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 buf[256]; data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:705:14: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). offset = atoi(buf); data/libapache2-mod-rivet-3.2.0/src/testing.c:33:16: [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). testfile = fopen(Tcl_GetString(objv[1]), "r"); data/libapache2-mod-rivet-3.2.0/src/librivet/rivetCrypt.c:47:23: [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). offset = offset % strlen(key); data/libapache2-mod-rivet-3.2.0/src/librivet/rivetList.c:135: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( (mode != EXACT) && (strlen(pattern) != (size_t)patternLen) ) { data/libapache2-mod-rivet-3.2.0/src/librivet/rivetList.c:146:21: [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(value) != (size_t)valueLen ) { data/libapache2-mod-rivet-3.2.0/src/librivet/rivetList.c:153:21: [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(value) != (size_t)valueLen ) { data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:97:31: [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 content_type_len = strlen(r->content_type); data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:112:66: [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 (((private->ctype==RIVET_TEMPLATE) && (content_type_len > strlen(RIVET_TEMPLATE_CTYPE))) || \ data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:113:66: [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). ((private->ctype==RIVET_TCLFILE) && (content_type_len > strlen(RIVET_TCLFILE_CTYPE)))) { data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:293:21: [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). strlen(varname) < strlen(parmkey) ? data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:293:39: [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). strlen(varname) < strlen(parmkey) ? data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:294:21: [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). strlen(parmkey) : strlen(varname))) data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:294:39: [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). strlen(parmkey) : strlen(varname))) data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:338:18: [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). strlen(varname) < strlen(parms[i].key) ? data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:338: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). strlen(varname) < strlen(parms[i].key) ? data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:339:18: [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). strlen(parms[i].key) : strlen(varname))) data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:339:41: [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). strlen(parms[i].key) : strlen(varname))) data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:419:21: [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). strlen(varname) < strlen(parms[i].key) ? data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:419:39: [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). strlen(varname) < strlen(parms[i].key) ? data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:420:21: [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). strlen(parms[i].key) : strlen(varname))) data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:420:44: [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). strlen(parms[i].key) : strlen(varname))) data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/TclWebapache.c:641:48: [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). Tcl_ExternalToUtfDString(NULL, in, (signed)strlen(in), &dstr); data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_cache.c:248:58: [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*) apr_pcalloc (rivet_interp->pool,(strlen(hashKey)+1)*sizeof(char)); data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_generator.c:152:89: [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). (running_scripts *) apr_hash_get (interp_obj->per_dir_scripts,rdc->path,strlen(rdc->path)); data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/mod_rivet_generator.c:168:69: [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). apr_hash_set (interp_obj->per_dir_scripts,rdc->path,strlen(rdc->path),scripts); data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivetCore.c:152: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). size_t script_name_l = strlen(script_name); data/libapache2-mod-rivet-3.2.0/src/mod_rivet_ng/rivetCore.c:2033:51: [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). Tcl_SetObjResult(interp,Tcl_NewStringObj(buff,strlen(buff))); data/libapache2-mod-rivet-3.2.0/src/parser/rivetParser.c:242:29: [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 endseqlen = (int) strlen(END_TAG); data/libapache2-mod-rivet-3.2.0/src/parser/rivetParser.c:243: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). int startseqlen = (int) strlen(START_TAG); data/libapache2-mod-rivet-3.2.0/src/request/apache_multipart_buffer.c:42:22: [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 needlen = strlen(needle); data/libapache2-mod-rivet-3.2.0/src/request/apache_multipart_buffer.c:82:63: [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). bytes_to_read = (int)(self->r->remaining - (apr_off_t)strlen(self->boundary)); data/libapache2-mod-rivet-3.2.0/src/request/apache_multipart_buffer.c:191:22: [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 minsize = strlen(boundary)+6; data/libapache2-mod-rivet-3.2.0/src/request/apache_multipart_buffer.c:221:39: [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). while( (line = get_line(self)) && strlen(line) > 0 ) { data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:549: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). blen = strlen(boundary); data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:550: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). if (blen == 0 || blen < strlen("boundary")) data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:552: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). boundary += blen - strlen("boundary"); data/libapache2-mod-rivet-3.2.0/src/request/apache_request.c:632:25: [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). strlen(mbuff->boundary)) ) { data/libapache2-mod-rivet-3.2.0/src/rivet.h:39:59: [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). #define STRNEQU(s1,s2) (s1[0] == s2[0] && strncmp(s1, s2, strlen(s2)) == 0) ANALYSIS SUMMARY: Hits = 64 Lines analyzed = 12703 in approximately 0.74 seconds (17192 lines/second) Physical Source Lines of Code (SLOC) = 6965 Hits@level = [0] 4 [1] 36 [2] 20 [3] 0 [4] 8 [5] 0 Hits@level+ = [0+] 68 [1+] 64 [2+] 28 [3+] 8 [4+] 8 [5+] 0 Hits/KSLOC@level+ = [0+] 9.7631 [1+] 9.1888 [2+] 4.0201 [3+] 1.1486 [4+] 1.1486 [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.