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/vrrpd-1.0/ipaddr.c Examining data/vrrpd-1.0/ipaddr.h Examining data/vrrpd-1.0/libnetlink.h Examining data/vrrpd-1.0/proto.h Examining data/vrrpd-1.0/ll_map.h Examining data/vrrpd-1.0/daemon.h Examining data/vrrpd-1.0/vrrpd.h Examining data/vrrpd-1.0/ll_map.c Examining data/vrrpd-1.0/vrrpd.c Examining data/vrrpd-1.0/daemon.c Examining data/vrrpd-1.0/ipsecah.h Examining data/vrrpd-1.0/md5.c Examining data/vrrpd-1.0/iproute.c Examining data/vrrpd-1.0/ipsecah.c Examining data/vrrpd-1.0/libnetlink.c Examining data/vrrpd-1.0/md5.h Examining data/vrrpd-1.0/iproute.h FINAL RESULTS: data/vrrpd-1.0/ll_map.c:84:2: [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(im->name, RTA_DATA(tb[IFLA_IFNAME])); data/vrrpd-1.0/ll_map.c:149: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(ncache, name); data/vrrpd-1.0/vrrpd.c:168:3: [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( pidfile, sizeof(pidfile), "%s/" VRRP_PID_FORMAT data/vrrpd-1.0/vrrpd.c:915:3: [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( from.sa_data, vsrv->vif.ifname ); data/vrrpd-1.0/vrrpd.h:36:19: [4] (format) syslog: If syslog's format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant format string for syslog. #define vrrpd_log syslog data/vrrpd-1.0/vrrpd.h:137:25: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited (CWE-134). Use a constant for the format specification. #define VRRP_LOG( str ) printf str data/vrrpd-1.0/vrrpd.c:1060:9: [3] (buffer) getopt: Some older implementations do not protect against internal buffer overflows (CWE-120, CWE-20). Check implementation on installation, or limit the size of all string inputs. c = getopt( argc, argv, "f:si:v:a:p:d:m:c:hnDl:" ); data/vrrpd-1.0/daemon.c:63:7: [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). fd = open(_PATH_DEVNULL, O_RDWR, 0); data/vrrpd-1.0/ipaddr.c:132: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[256]; data/vrrpd-1.0/iproute.c:129: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(entry->rtm, r, sizeof(struct rtmsg)); data/vrrpd-1.0/iproute.c:136:22: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. if (tb[RTA_SRC]) memcpy(&entry->src, RTA_DATA(tb[RTA_SRC]), 4); data/vrrpd-1.0/iproute.c:137:26: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. if (tb[RTA_PREFSRC]) memcpy(&entry->psrc, RTA_DATA(tb[RTA_PREFSRC]), 4); data/vrrpd-1.0/iproute.c:138:22: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. if (tb[RTA_DST]) memcpy(&entry->dest, RTA_DATA(tb[RTA_DST]), 4); data/vrrpd-1.0/iproute.c:139:26: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. if (tb[RTA_GATEWAY]) memcpy(&entry->gate, RTA_DATA(tb[RTA_GATEWAY]), 4); data/vrrpd-1.0/iproute.c:140:23: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. if (tb[RTA_FLOW]) memcpy(&entry->flow, RTA_DATA(tb[RTA_FLOW]), 4); data/vrrpd-1.0/iproute.c:187: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[1024]; data/vrrpd-1.0/iproute.c:196: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(&req.r, r->rtm, sizeof(struct rtmsg)); data/vrrpd-1.0/iproute.c:252:10: [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 buf[20]; data/vrrpd-1.0/iproute.c:256: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(buf, "%d.%d.%d.%d", bytep[0], bytep[1], bytep[2], bytep[3]); data/vrrpd-1.0/ipsecah.c:32:12: [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 k_ipad[65]; /* inner padding - key XORd with ipad */ data/vrrpd-1.0/ipsecah.c:33:12: [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 k_opad[65]; /* outer padding - key XORd with opad */ data/vrrpd-1.0/ipsecah.c:34:12: [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 tk[16]; data/vrrpd-1.0/ipsecah.c:64: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(k_ipad,key,key_len); data/vrrpd-1.0/ipsecah.c:65: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(k_opad,key,key_len); data/vrrpd-1.0/libnetlink.c:137: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 buf[8192]; data/vrrpd-1.0/libnetlink.c:224: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 buf[8192]; data/vrrpd-1.0/libnetlink.c:301:8: [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(answer, h, h->nlmsg_len); data/vrrpd-1.0/libnetlink.c:311: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(answer, h, h->nlmsg_len); data/vrrpd-1.0/libnetlink.c:339: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 buf[8192]; data/vrrpd-1.0/libnetlink.c:411: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 buf[8192]; data/vrrpd-1.0/libnetlink.c:474: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(RTA_DATA(rta), &data, 4); data/vrrpd-1.0/libnetlink.c:489: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(RTA_DATA(rta), data, alen); data/vrrpd-1.0/libnetlink.c:504: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(RTA_DATA(subrta), &data, 4); data/vrrpd-1.0/libnetlink.c:519: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(RTA_DATA(subrta), data, alen); data/vrrpd-1.0/ll_map.c:32: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 addr[8]; data/vrrpd-1.0/ll_map.c:33: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 name[16]; data/vrrpd-1.0/ll_map.c:79: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(im->addr, RTA_DATA(tb[IFLA_ADDRESS]), alen); data/vrrpd-1.0/ll_map.c:104: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. static char nbuf[16]; data/vrrpd-1.0/ll_map.c:136: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. static char ncache[16]; data/vrrpd-1.0/md5.c:87:20: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. #define MD5_memcpy memcpy data/vrrpd-1.0/md5.c:91:30: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. #define MD5_memcpy(_a,_b,_c) memcpy((_a), (_b),(_c)) data/vrrpd-1.0/md5.c:98: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. static unsigned char PADDING[64] = { data/vrrpd-1.0/md5.c:196:10: [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 digest[16]; /* message digest */ data/vrrpd-1.0/md5.c:199:12: [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 bits[8]; data/vrrpd-1.0/md5.c:229:10: [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 block[64]; data/vrrpd-1.0/md5.c:381:4: [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 *)output)[i] = (char)value; data/vrrpd-1.0/md5.h:63:12: [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 buffer[64]; /* input buffer */ data/vrrpd-1.0/vrrpd.c:88: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 vrrp_hwaddr[6]; // WORK: lame hardcoded for ethernet data/vrrpd-1.0/vrrpd.c:92: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 VridName[VRIDNAME_MAX+1]="vrrpd"; /* handy to have a name in the logs */ data/vrrpd-1.0/vrrpd.c:93: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 PidDir[FILENAME_MAX+1]; data/vrrpd-1.0/vrrpd.c:115:1: [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 *ifname[MAXINTS]; data/vrrpd-1.0/vrrpd.c:167:10: [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 pidfile[FILENAME_MAX+1]; data/vrrpd-1.0/vrrpd.c:183:18: [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 *fOut = fopen( name, "w" ); data/vrrpd-1.0/vrrpd.c:214: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 *fIn = fopen( name, "r" ); data/vrrpd-1.0/vrrpd.c:316: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( ifr.ifr_hwaddr.sa_data, addr, addrlen ); data/vrrpd-1.0/vrrpd.c:350: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( ifr.ifr_hwaddr.sa_data, addr, addrlen ); data/vrrpd-1.0/vrrpd.c:378: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, ifr.ifr_hwaddr.sa_data, addrlen ); data/vrrpd-1.0/vrrpd.c:500: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(backup_auth_data,ah->auth_data,sizeof(ah->auth_data)); data/vrrpd-1.0/vrrpd.c:527:5: [2] (buffer) bcopy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. bcopy(buffer+i*sizeof(uint32_t),&ipbuf,sizeof(uint32_t)); data/vrrpd-1.0/vrrpd.c:690: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( eth->ether_shost, vrrp_hwaddr, sizeof(vrrp_hwaddr)); data/vrrpd-1.0/vrrpd.c:807: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(ah->auth_data,digest,HMAC_MD5_TRUNC); data/vrrpd-1.0/vrrpd.c:856: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( pw, vif->auth_data, sizeof(vif->auth_data)); data/vrrpd-1.0/vrrpd.c:1101:20: [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). vsrv->vrid = atoi( optarg ); data/vrrpd-1.0/vrrpd.c:1120:42: [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). vsrv->orig_prio = vsrv->priority = atoi( optarg ); data/vrrpd-1.0/vrrpd.c:1127:25: [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). vsrv->adver_int = atoi( optarg ); data/vrrpd-1.0/vrrpd.c:1141:25: [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). vsrv->delt_prio = atoi( optarg ); data/vrrpd-1.0/vrrpd.c:1222: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( vrrp_hwaddr, vsrv->vif.hwaddr,sizeof(vsrv->vif.hwaddr)); data/vrrpd-1.0/vrrpd.c:1296:14: [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 __ar_sha[ETH_ALEN]; /* Sender hardware address. */ data/vrrpd-1.0/vrrpd.c:1297:14: [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 __ar_sip[4]; /* Sender IP address. */ data/vrrpd-1.0/vrrpd.c:1298:14: [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 __ar_tha[ETH_ALEN]; /* Target hardware address. */ data/vrrpd-1.0/vrrpd.c:1299:14: [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 __ar_tip[4]; /* Target IP address. */ data/vrrpd-1.0/vrrpd.c:1311: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( eth->ether_shost, hwaddr, hwlen ); data/vrrpd-1.0/vrrpd.c:1320: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( arph->__ar_sha, hwaddr, hwlen ); data/vrrpd-1.0/vrrpd.c:1322: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( arph->__ar_sip, &addr, sizeof(addr) ); data/vrrpd-1.0/vrrpd.c:1323: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( arph->__ar_tip, &addr, sizeof(addr) ); data/vrrpd-1.0/vrrpd.c:1338:15: [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 temp_ipaddr[32]; data/vrrpd-1.0/vrrpd.h:82: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 hwaddr[6]; /* WORK: lame hardcoded for ethernet !!!! */ data/vrrpd-1.0/vrrpd.c:277:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); data/vrrpd-1.0/vrrpd.c:297:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); data/vrrpd-1.0/vrrpd.c:315:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); data/vrrpd-1.0/vrrpd.c:340:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); data/vrrpd-1.0/vrrpd.c:376:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); data/vrrpd-1.0/vrrpd.c:998:15: [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 len = strlen(str); data/vrrpd-1.0/vrrpd.c:1263:11: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). len = read( vsrv->sockfd, buf, buflen ); data/vrrpd-1.0/vrrpd.c:1808:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy( ifr[i].ifr_name, ifname[i], IFNAMSIZ ); data/vrrpd-1.0/vrrpd.c:1826:3: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy( ifr_up.ifr_name, ifname[i], IFNAMSIZ ); ANALYSIS SUMMARY: Hits = 86 Lines analyzed = 4043 in approximately 0.13 seconds (30151 lines/second) Physical Source Lines of Code (SLOC) = 2621 Hits@level = [0] 119 [1] 9 [2] 70 [3] 1 [4] 6 [5] 0 Hits@level+ = [0+] 205 [1+] 86 [2+] 77 [3+] 7 [4+] 6 [5+] 0 Hits/KSLOC@level+ = [0+] 78.2144 [1+] 32.8119 [2+] 29.3781 [3+] 2.67074 [4+] 2.2892 [5+] 0 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.