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/bbmap-38.87+dfsg/jni/align2_BandedAlignerJNI.h Examining data/bbmap-38.87+dfsg/jni/align2_MultiStateAligner11tsJNI.h Examining data/bbmap-38.87+dfsg/jni/BandedAlignerJNI.c Examining data/bbmap-38.87+dfsg/jni/BBMergeOverlapper.c Examining data/bbmap-38.87+dfsg/jni/IceCreamAlignerJNI.c Examining data/bbmap-38.87+dfsg/jni/icecream_IceCreamAlignerJNI.h Examining data/bbmap-38.87+dfsg/jni/jgi_BBMergeOverlapper.h Examining data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c FINAL RESULTS: data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:101:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). jbyte * read, data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:140:44: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const jbyte call0=(row<2 ? (jbyte)'?' : read[row-2]); data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:141:22: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const jbyte call1=read[row-1]; data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:362:10: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). jbyte * read, data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:416:11: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). jbyte c=read[i]; data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:461:44: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const jbyte call0=(row<2 ? (jbyte)'?' : read[row-2]); data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:462:22: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). const jbyte call1=read[row-1]; data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:710:19: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). jbyteArray read, data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:723:49: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). jsize read_length=(*env)->GetArrayLength(env, read); data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:730:64: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). jbyte * jread=(jbyte*)(*env)->GetPrimitiveArrayCritical(env, read, NULL); data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:744:46: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). (*env)->ReleasePrimitiveArrayCritical(env, read, jread, JNI_ABORT); data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:756:19: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). jbyteArray read, data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:776:49: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). jsize read_length=(*env)->GetArrayLength(env, read); data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:783:64: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). jbyte * jread=(jbyte*)(*env)->GetPrimitiveArrayCritical(env, read, NULL); data/bbmap-38.87+dfsg/jni/MultiStateAligner11tsJNI.c:801:46: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). (*env)->ReleasePrimitiveArrayCritical(env, read, jread, JNI_ABORT); ANALYSIS SUMMARY: Hits = 15 Lines analyzed = 2933 in approximately 0.21 seconds (13837 lines/second) Physical Source Lines of Code (SLOC) = 2300 Hits@level = [0] 1 [1] 15 [2] 0 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 16 [1+] 15 [2+] 0 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 6.95652 [1+] 6.52174 [2+] 0 [3+] 0 [4+] 0 [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.