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/libblkmaker-0.5.3/base58.c Examining data/libblkmaker-0.5.3/blkmaker.c Examining data/libblkmaker-0.5.3/blkmaker.h Examining data/libblkmaker-0.5.3/blkmaker_jansson.c Examining data/libblkmaker-0.5.3/blkmaker_jansson.h Examining data/libblkmaker-0.5.3/blktemplate.c Examining data/libblkmaker-0.5.3/blktemplate.h Examining data/libblkmaker-0.5.3/example.c Examining data/libblkmaker-0.5.3/hex.c Examining data/libblkmaker-0.5.3/private.h Examining data/libblkmaker-0.5.3/testinput.c FINAL RESULTS: data/libblkmaker-0.5.3/base58.c:35: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 addrbin[25]; data/libblkmaker-0.5.3/base58.c:55:4: [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(&cout[3], &addrbin[1], 20); data/libblkmaker-0.5.3/base58.c:65:4: [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(&cout[2], &addrbin[1], 20); data/libblkmaker-0.5.3/blkmaker.c:69: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(&data[0], data/libblkmaker-0.5.3/blkmaker.c:103:4: [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(&data[off], tmpl->auxs[i].data, aux->datasz); data/libblkmaker-0.5.3/blkmaker.c:110: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(&data[off], data/libblkmaker-0.5.3/blkmaker.c:118: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(&data[off], script, scriptsz); data/libblkmaker-0.5.3/blkmaker.c:203: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 hashes[(hashcount + 1) * 32]; data/libblkmaker-0.5.3/blkmaker.c:206: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(&hashes[0x20 * (i + 1)], tmpl->txns[i].hash_, 0x20); data/libblkmaker-0.5.3/blkmaker.c:210: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(&branches[i], &hashes[0x20], 0x20); data/libblkmaker-0.5.3/blkmaker.c:213:4: [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(&hashes[32 * hashcount], &hashes[32 * (hashcount - 1)], 32); data/libblkmaker-0.5.3/blkmaker.c:245: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(&hashes[1], tmpl->_mrklbranch[i], 0x20); data/libblkmaker-0.5.3/blkmaker.c:251: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(mrklroot_out, &hashes[0], 32); data/libblkmaker-0.5.3/blkmaker.c:280: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(out, in, cbPostScriptSig+1); data/libblkmaker-0.5.3/blkmaker.c:281: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(outPostScriptSig, &in[cbPostScriptSig], insz - cbPostScriptSig); data/libblkmaker-0.5.3/blkmaker.c:287: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(outExtranonce, append, appendsz); data/libblkmaker-0.5.3/blkmaker.c:342: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(vout, in, insz); data/libblkmaker-0.5.3/blkmaker.c:379: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(&cbuf[4], &tmpl->prevblk, 32); data/libblkmaker-0.5.3/blkmaker.c:381: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 cbtxndata[tmpl->cbtxn->datasz + sizeof(dataid)]; data/libblkmaker-0.5.3/blkmaker.c:389: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(&cbuf[72], &tmpl->diffbits, 4); data/libblkmaker-0.5.3/blkmaker.c:429: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(&cbuf[4], &tmpl->prevblk, 32); data/libblkmaker-0.5.3/blkmaker.c:435: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 dummy[extranoncesz]; data/libblkmaker-0.5.3/blkmaker.c:444: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(&cbuf[72], &tmpl->diffbits, 4); data/libblkmaker-0.5.3/blkmaker.c:454: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(*out_branches, tmpl->_mrklbranch, branches_bytesz); data/libblkmaker-0.5.3/blkmaker.c:522: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(blk, data, 76); data/libblkmaker-0.5.3/blkmaker.c:524: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(&blk[76], &nonce, 4); data/libblkmaker-0.5.3/blkmaker.c:539:4: [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(&blk[offs], tmpl->cbtxn->data, tmpl->cbtxn->datasz); data/libblkmaker-0.5.3/blkmaker.c:546: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(&blk[offs], tmpl->txns[i].data, tmpl->txns[i].datasz); data/libblkmaker-0.5.3/blkmaker.c:570: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 extended_extranonce[extranoncesz + 1]; data/libblkmaker-0.5.3/blkmaker.c:571: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(extended_extranonce, extranonce, extranoncesz); data/libblkmaker-0.5.3/blktemplate.h:99: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 diffbits[4]; data/libblkmaker-0.5.3/example.c:29: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 bufx[26] = {'\xff'}; data/libblkmaker-0.5.3/example.c:36: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 cbuf[51]; data/libblkmaker-0.5.3/example.c:97: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 data[80], hash[32]; data/libblkmaker-0.5.3/base58.c:37: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). const size_t b58sz = strlen(addr); data/libblkmaker-0.5.3/blkmaker_jansson.c:137: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). size_t datasz = strlen(hexdata) / 2; data/libblkmaker-0.5.3/blkmaker_jansson.c:245: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). size_t sz = strlen(s) / 2; data/libblkmaker-0.5.3/example.c:27: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). const size_t addrlen = strlen(addr); ANALYSIS SUMMARY: Hits = 38 Lines analyzed = 1640 in approximately 0.08 seconds (20621 lines/second) Physical Source Lines of Code (SLOC) = 1306 Hits@level = [0] 7 [1] 4 [2] 34 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 45 [1+] 38 [2+] 34 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 34.4564 [1+] 29.0965 [2+] 26.0337 [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.