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/arduino-builder-1.3.25/src/arduino.cc/builder/test/dependent_libraries/library1/library1.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/dependent_libraries/library2/library2.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/dependent_libraries/library3/library3.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/dependent_libraries/library3/library3.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/dependent_libraries/library4/library4.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/ANewLibrary-master/anewlibrary.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/Balanduino/Balanduino.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/Balanduino/Kalman.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/Balanduino/PS3BT.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/Balanduino/SPP.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/Balanduino/Wii.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/Balanduino/XBOXRECV.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/Balanduino/adk.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/Balanduino/usbhub.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/FakeAudio/Audio.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/FakeAudio/FakeAudio.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/IRremote/IRremote.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/IRremote/IRremoteInt.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/SPI/SPI.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/SPI/SPI.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/ShouldNotRecurseWithOldLibs/ShouldNotRecurseWithOldLibs.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/ShouldNotRecurseWithOldLibs/ShouldNotRecurseWithOldLibs.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/ShouldNotRecurseWithOldLibs/doc/error.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/ShouldNotRecurseWithOldLibs/utility/utils.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/ShouldNotRecurseWithOldLibs/utility/utils.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/KeyboardController.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/KeyboardController.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/MouseController.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/MouseController.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/Usb.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/Usb.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/UsbCore.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/address.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/adk.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/adk.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/confdescparser.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hexdump.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hid.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hid.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidboot.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidboot.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidescriptorparser.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidescriptorparser.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hiduniversal.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hiduniversal.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidusagestr.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/macros.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/message.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/message.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/parsetools.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/parsetools.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/printhex.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/sink_parser.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/usb_ch9.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/usbhub.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/usbhub.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/testlib1/testlib1.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/testlib2/testlib2.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/testlib3/testlib3.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/testlib4/testlib4.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch1/header.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch1/src/helper.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch2/empty_1.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch2/empty_2.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch_with_config/config.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch_with_config/src/includes/de bug.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch_with_config/src/includes/de bug.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch_with_function_pointer/CallbackBug.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch_with_subfolders/src/subfolder/other.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch_with_subfolders/src/subfolder/other.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch_with_subfolders/subfolder/dont_load_me.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch_with_subfolders/subfolder/other.h Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/sketch_with_templates_and_shift/template_and_shift.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/SPI.cpp Examining data/arduino-builder-1.3.25/src/arduino.cc/builder/test/user_hardware/my_avr_platform/avr/libraries/SPI/SPI.h FINAL RESULTS: data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/Usb.cpp:180:50: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). rcode = InTransfer(pep, nak_limit, (uint8_t*)&read, dataptr); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/Usb.cpp:195:32: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ((USBReadParser*)p)->Parse(read, dataptr, total - left); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/adk.h:140: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). return ( pUsb->ctrlReq(bAddress, 0, bmREQ_ADK_SEND, ADK_SENDSTR, 0, 0, index, strlen(str) + 1, strlen(str) + 1, (uint8_t*)str, NULL)); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/adk.h:140:104: [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). return ( pUsb->ctrlReq(bAddress, 0, bmREQ_ADK_SEND, ADK_SENDSTR, 0, 0, index, strlen(str) + 1, strlen(str) + 1, (uint8_t*)str, NULL)); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidboot.h:575:110: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). rcode = pUsb->inTransfer(bAddress, epInfo[epInterruptInIndex + i].epAddr, (uint8_t*)&read, buf); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidboot.h:578:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if(!rcode && read > 2) { data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidboot.h:580:86: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). pRptParser[i]->Parse((HID*)this, 0, (uint8_t)read, buf); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidboot.h:587:46: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if(!rcode && read) { data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidboot.h:588:87: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). USBTRACE3("(hidboot.h) Strange read count: ", read, 0x80); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidboot.h:593:38: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if(!rcode && read && (UsbDEBUGlvl > 0x7f)) { data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidboot.h:594:56: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). for(uint8_t i = 0; i < read; i++) { data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hidboot.h:598:36: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if(read) data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hiduniversal.cpp:385:101: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). uint8_t rcode = pUsb->inTransfer(bAddress, epInfo[index].epAddr, (uint8_t*)&read, buf); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hiduniversal.cpp:393:28: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if(read > constBuffLen) data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hiduniversal.cpp:396:59: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). bool identical = BuffersIdentical(read, buf, prevBuf); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hiduniversal.cpp:398:36: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). SaveBuffer(read, buf, prevBuf); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hiduniversal.cpp:405:48: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). for(uint8_t i = 0; i < read; i++) { data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hiduniversal.cpp:412:67: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ParseHIDData(this, bHasReportId, (uint8_t)read, buf); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/hiduniversal.cpp:417:73: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). prs->Parse(this, bHasReportId, (uint8_t)read, buf); data/arduino-builder-1.3.25/src/arduino.cc/builder/test/libraries/USBHost/src/usbhub.cpp:246:58: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). rcode = pUsb->inTransfer(bAddress, 1, (uint8_t*)&read, buf); ANALYSIS SUMMARY: Hits = 20 Lines analyzed = 9531 in approximately 0.30 seconds (31474 lines/second) Physical Source Lines of Code (SLOC) = 6801 Hits@level = [0] 17 [1] 20 [2] 0 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 37 [1+] 20 [2+] 0 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 5.44038 [1+] 2.94074 [2+] 0 [3+] 0 [4+] 0 [5+] 0 Symlinks skipped = 1 (--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.