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/cvxopt-1.2.5+dfsg/src/C/amd.c Examining data/cvxopt-1.2.5+dfsg/src/C/base.c Examining data/cvxopt-1.2.5+dfsg/src/C/blas_redefines.h Examining data/cvxopt-1.2.5+dfsg/src/C/cholmod.c Examining data/cvxopt-1.2.5+dfsg/src/C/cvxopt.h Examining data/cvxopt-1.2.5+dfsg/src/C/dense.c Examining data/cvxopt-1.2.5+dfsg/src/C/dsdp.c Examining data/cvxopt-1.2.5+dfsg/src/C/fftw.c Examining data/cvxopt-1.2.5+dfsg/src/C/glpk.c Examining data/cvxopt-1.2.5+dfsg/src/C/gsl.c Examining data/cvxopt-1.2.5+dfsg/src/C/misc.h Examining data/cvxopt-1.2.5+dfsg/src/C/misc_solvers.c Examining data/cvxopt-1.2.5+dfsg/src/C/sparse.c Examining data/cvxopt-1.2.5+dfsg/src/C/umfpack.c Examining data/cvxopt-1.2.5+dfsg/src/C/blas.c Examining data/cvxopt-1.2.5+dfsg/src/C/lapack.c FINAL RESULTS: data/cvxopt-1.2.5+dfsg/src/C/amd.c:48: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 name[20]; data/cvxopt-1.2.5+dfsg/src/C/amd.c:80: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 err_str[100]; data/cvxopt-1.2.5+dfsg/src/C/amd.c:95:17: [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(err_str, "invalid value for AMD parameter: %-.20s", data/cvxopt-1.2.5+dfsg/src/C/amd.c:101:17: [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(err_str, "invalid value for AMD parameter: " data/cvxopt-1.2.5+dfsg/src/C/amd.c:192:17: [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(rowind + colptr[j], (int_t *) SP_ROW(A) + k, data/cvxopt-1.2.5+dfsg/src/C/amd.c:200:17: [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(rowind + colptr[j], (int_t *) (SP_ROW(A) + data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:85: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 err_str[100]; data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:116:17: [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(err_str, "invalid value for CHOLMOD parameter:" \ data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:137:17: [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(err_str, "invalid value for CHOLMOD parameter:" \ data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:216: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(B->p, SP_COL(A), (SP_NCOLS(A)+1)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:545: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(b->x, x->x, n*E_SIZE[MAT_ID(B)]); data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:642: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(SP_COL(X), Xc->p, (Xc->ncol+1)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:643: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(SP_ROW(X), Xc->i, ((int_t *)Xc->p)[Xc->ncol]*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:644: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(SP_VAL(X), Xc->x, data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:803: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(b->x, x->x, SP_NROWS(A)*E_SIZE[MAT_ID(B)]); data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:937: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(SP_COL(X), (int_t *) Xc->p, (Xc->ncol+1)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:938: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(SP_ROW(X), (int_t *) Xc->i, data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:940: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(SP_VAL(X), (double *) Xc->x, data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:1064: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(SP_COL(ret), Ls->p, (Ls->ncol+1)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:1065: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(SP_ROW(ret), Ls->i, (Ls->nzmax)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/cholmod.c:1066: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(SP_VAL(ret), Ls->x, (Ls->nzmax)*E_SIZE[SP_ID(ret)]); data/cvxopt-1.2.5+dfsg/src/C/dense.c:115: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(dest, src->buffer, (size_t)E_SIZE[src->id]*MAT_LGT(src) ); data/cvxopt-1.2.5+dfsg/src/C/dense.c:1196: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(self->buffer, view.buf, E_SIZE[self->id]*MAT_LGT(self)); data/cvxopt-1.2.5+dfsg/src/C/dsdp.c:125: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 err_str[100]; data/cvxopt-1.2.5+dfsg/src/C/dsdp.c:202:21: [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(err_str, "invalid value for integer " data/cvxopt-1.2.5+dfsg/src/C/dsdp.c:221:21: [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(err_str, "invalid value for nonnegative " data/cvxopt-1.2.5+dfsg/src/C/dsdp.c:237:21: [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(err_str, "invalid value for float " data/cvxopt-1.2.5+dfsg/src/C/dsdp.c:266: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(lp_values, MAT_BUFD(Gl), ml*n*sizeof(double)); data/cvxopt-1.2.5+dfsg/src/C/dsdp.c:273: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(lp_values, SP_VALD(Gl), SP_NNZ(Gl)*sizeof(double)); data/cvxopt-1.2.5+dfsg/src/C/dsdp.c:281: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(lp_values+lp_colptr[n], MAT_BUFD(hl), ml*sizeof(double)); data/cvxopt-1.2.5+dfsg/src/C/dsdp.c:456: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(MAT_BUFD(zl), zlvals, ml*sizeof(double)); data/cvxopt-1.2.5+dfsg/src/C/lapack.c:734:37: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. for (k=0; k<n; k++) memcpy((double *) Ac + k*n, data/cvxopt-1.2.5+dfsg/src/C/lapack.c:755:37: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. for (k=0; k<n; k++) memcpy((complex_t *) Ac + k*n, data/cvxopt-1.2.5+dfsg/src/C/lapack.c:1089:21: [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((double *) Ac + kl + k*(2*kl+ku+1), data/cvxopt-1.2.5+dfsg/src/C/lapack.c:1114:21: [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((complex_t *) Ac + kl + k*(2*kl+ku+1), data/cvxopt-1.2.5+dfsg/src/C/lapack.c:3061:21: [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((double *) Ac + k*n, MAT_BUFD(A) + oA + k*ldA, data/cvxopt-1.2.5+dfsg/src/C/lapack.c:3108:21: [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((complex_t *) Ac + k*n, data/cvxopt-1.2.5+dfsg/src/C/lapack.c:3244:21: [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((double *) Ac + k*n, MAT_BUFD(A) + oA + k*ldA, data/cvxopt-1.2.5+dfsg/src/C/lapack.c:3289:21: [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((complex_t *) Ac + k*n, data/cvxopt-1.2.5+dfsg/src/C/sparse.c:159: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(dest, src, n*E_SIZE[dest_id]); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:244: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(ret->rowind, src->rowind, CCS_NNZ(src)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.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(ret->colptr, src->colptr, (src->ncols+1)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:908: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(Z->values, X, sizeof(double)*mn); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:1040: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(Z->values, X, sizeof(double complex)*mn); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:1042: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(Z->values, X, sizeof(_Dcomplex)*mn); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:2565: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(SP_COL(ret), SP_COL(A), (SP_NCOLS(A)+1)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:2566: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(SP_ROW(ret), SP_ROW(A), SP_NNZ(A)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:2884: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(MAT_BUF(ret), SP_VAL(self), SP_NNZ(self)*E_SIZE[SP_ID(self)]); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:2907: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(SP_VAL(self), MAT_BUF(value), MAT_LGT(value)*E_SIZE[SP_ID(self)]); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:2917: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(MAT_BUF(A), SP_ROW(self), SP_NNZ(self)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:2949: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(MAT_BUF(colptr), SP_COL(self), (SP_NCOLS(self)+1)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:2950: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(MAT_BUF(rowind), SP_ROW(self), SP_NNZ(self)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:2951: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(MAT_BUF(val), SP_VAL(self), SP_NNZ(self)*E_SIZE[SP_ID(self)]); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:3037: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(SP_COL(ret), SP_COL(self), (SP_NCOLS(self)+1)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:3038: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(SP_ROW(ret), SP_ROW(self), SP_NNZ(self)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:3058: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(SP_COL(ret), SP_COL(self), (SP_NCOLS(self)+1)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:3059: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(SP_ROW(ret), SP_ROW(self), SP_NNZ(self)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:4128: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(SP_ROW(x), SP_ROW(self), SP_NNZ(self)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/sparse.c:4129: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(SP_COL(x), SP_COL(self), (SP_NCOLS(self)+1)*sizeof(int_t)); data/cvxopt-1.2.5+dfsg/src/C/umfpack.c:40: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 umfpack_error[20]; data/cvxopt-1.2.5+dfsg/src/C/umfpack.c:232: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((unsigned char*)B->buffer + (k*ldB + oB)*E_SIZE[SP_ID(A)], x, data/cvxopt-1.2.5+dfsg/src/C/umfpack.c:555:6: [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((unsigned char*)B->buffer + (k*ldB + oB)*E_SIZE[SP_ID(A)], x, ANALYSIS SUMMARY: Hits = 62 Lines analyzed = 27214 in approximately 0.92 seconds (29487 lines/second) Physical Source Lines of Code (SLOC) = 23220 Hits@level = [0] 7 [1] 0 [2] 62 [3] 0 [4] 0 [5] 0 Hits@level+ = [0+] 69 [1+] 62 [2+] 62 [3+] 0 [4+] 0 [5+] 0 Hits/KSLOC@level+ = [0+] 2.97158 [1+] 2.67011 [2+] 2.67011 [3+] 0 [4+] 0 [5+] 0 Dot directories skipped = 3 (--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.