X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/2e127cb83d8e599677e0b6b04635bc34ba874fa0..fbb86200a436458358afe1209d0b8f224c31ae84:/test/db1.expect diff --git a/test/db1.expect b/test/db1.expect index 5750c21..cf203e4 100644 --- a/test/db1.expect +++ b/test/db1.expect @@ -1,9 +1,10 @@ -make -e clean -make -e check employee.c: (in function employee_equal) employee.c:25: Function strncmp expects arg 3 to be size_t gets int: maxEmployeeName +employee.c: (in function employee_sprint) +employee.c:33: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf empset.c: (in function empset_insert) empset.c:28: Variable er declared but not used empset.c: (in function empset_disjointUnion) @@ -36,25 +37,33 @@ dbase.c: (in function query) dbase.c:210: Variable er declared but not used dbase.c:211: Variable e declared but not used drive.c: (in function main) +drive.c:47: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf +drive.c:63: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf +drive.c:81: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf +drive.c:118: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf drive.c:123: Return value (type db_status) ignored: hire(e) -Finished checking --- 16 code warnings, as expected +Finished checking --- 21 code warnings, as expected -employee.h:2: Name EMPLOYEE_H is reserved for future ANSI library extensions. - Macros beginning with E and a digit or uppercase letter may be added to - . (See ANSI, Section 4.13.1) -eref.h:2: Name EREF_H is reserved for future ANSI library extensions. Macros +employee.h:2: Name EMPLOYEE_H is reserved for future library extensions. Macros + beginning with E and a digit or uppercase letter may be added to . + (ISO99:7.26.3) +eref.h:2: Name EREF_H is reserved for future library extensions. Macros beginning with E and a digit or uppercase letter may be added to . - (See ANSI, Section 4.13.1) -empset.h:2: Name EMPSET_H is reserved for future ANSI library extensions. - Macros beginning with E and a digit or uppercase letter may be added to - . (See ANSI, Section 4.13.1) -erc.h:2: Name ERC_H is reserved for future ANSI library extensions. Macros + (ISO99:7.26.3) +empset.h:2: Name EMPSET_H is reserved for future library extensions. Macros beginning with E and a digit or uppercase letter may be added to . - (See ANSI, Section 4.13.1) -ereftab.h:4: Name EREFTAB_H is reserved for future ANSI library extensions. - Macros beginning with E and a digit or uppercase letter may be added to - . (See ANSI, Section 4.13.1) + (ISO99:7.26.3) +erc.h:2: Name ERC_H is reserved for future library extensions. Macros beginning + with E and a digit or uppercase letter may be added to . + (ISO99:7.26.3) +ereftab.h:4: Name EREFTAB_H is reserved for future library extensions. Macros + beginning with E and a digit or uppercase letter may be added to . + (ISO99:7.26.3) bool.h:20: Modifies list for bool_initMod uses global internal state, not included in globals list. bool.h:20: Declaration of bool_initMod @@ -85,6 +94,8 @@ employee.c:31: Read-only string literal storage used as initial value for unqualified storage: jobs[1] = "non-manager" employee.c:31: Read-only string literal storage used as initial value for unqualified storage: jobs[2] = "?" +employee.c:33: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf employee.c:34: Array fetch using non-integer, gender: gender[e.gen] employee.c:34: Array fetch using non-integer, job: jobs[e.j] employee.h: (in macro employee_initMod) @@ -134,7 +145,7 @@ eref.c:40: Undocumented use of global eref_Pool eref.c:41: Undocumented use of global eref_Pool eref.c:41: Undocumented modification of eref_Pool.status[]: eref_Pool.status[i] = avail -eref.c:41: Body of for statement is not a block: eref_Pool.status[i] = avail +eref.c:41: Body of for statement is not a block: eref_Pool.status[i] = avail; eref.c:41: Undocumented use of global eref_Pool (in post loop test) eref.c:44: Undocumented use of global eref_Pool eref.c:44: Undocumented modification of eref_Pool.status[]: @@ -196,8 +207,8 @@ empset.c:5: Name _empset_get is in the implementation name space (any empset.c: (in function _empset_get) empset.c:11: Undocumented modification of s possible from call to erc_iterStart: erc_iterStart(s) -empset.c:15: Body of if statement is not a block: - do { { erc_iterFinal(it) } } while (FALSE) +empset.c:15: Body of if statement is not a block: do { { erc_iterFinal(it); + return er } } while (FALSE); empset.c: (in function empset_insert) empset.c:30: Undetected modification possible from call to unconstrained function _empset_get: _empset_get @@ -216,29 +227,29 @@ empset.c:85: Undocumented modification of s1 possible from call to empset.c:85: Undocumented modification of s2 possible from call to erc_iterStart: erc_iterStart(s2) empset.c:86: Body of for statement is not a block: - empset_insertUnique(result, eref_get(er)) + empset_insertUnique(result, eref_get(er)); empset.c: (in function empset_union) empset.c:108: Undocumented modification of s2 possible from call to erc_iterStart (through alias s1): erc_iterStart(s1) empset.c:108: Undocumented modification of s1 possible from call to erc_iterStart: erc_iterStart(s1) -empset.c:110: Body of if statement is not a block: erc_insert(result, er) +empset.c:110: Body of if statement is not a block: erc_insert(result, er); empset.c:109: Body of for statement is not a block: - if (!empset_member(eref_get(er), s2)) erc_insert(result, er) + if (!empset_member(eref_get(er), s2)) erc_insert(result, er); empset.c: (in function empset_intersect) -empset.c:125: Body of if statement is not a block: erc_insert(toDelete, er) +empset.c:125: Body of if statement is not a block: erc_insert(toDelete, er); empset.c:124: Body of for statement is not a block: - if (!empset_member(eref_get(er), s2)) erc_insert(toDelete, er) + if (!empset_member(eref_get(er), s2)) erc_insert(toDelete, er); empset.c:128: Return value (type bool) ignored: erc_delete(s1, er) -empset.c:128: Body of for statement is not a block: erc_delete(s1, er) +empset.c:128: Body of for statement is not a block: erc_delete(s1, er); empset.c: (in function empset_subset) empset.c:139: Undocumented modification of s1 possible from call to erc_iterStart: erc_iterStart(s1) -empset.c:141: Body of if statement is not a block: - do { { erc_iterFinal(it) } } while (FALSE) +empset.c:141: Body of if statement is not a block: do { { erc_iterFinal(it); + return FALSE } } while (FALSE); empset.c:140: Body of for statement is not a block: - if (!empset_member(eref_get(er), s2)) do { { erc_iterFinal(it) - } } while (FALSE) + if (!empset_member(eref_get(er), s2)) do { { erc_iterFinal(it); + return FALSE } } while (FALSE); empset.c:135: Variable e declared but not used empset.c: (in function empset_initMod) empset.c:148: Undocumented use of file static initDone @@ -304,7 +315,7 @@ erc.c:118: Variable it is released in true branch, but live in continuation. erc.c:117: Storage it is released erc.c:121: Only storage *it->next assigned to unqualified: *(it) = (*it)->next erc.c: (in function erc_join) -erc.c:130: Body of for statement is not a block: erc_insert(c1, tmpc->val) +erc.c:130: Body of for statement is not a block: erc_insert(c1, tmpc->val); erc.c: (in function erc_sprint) erc.c:141: Function malloc expects arg 1 to be size_t gets int: erc_size(c) * (employeePrintSize + 1) + 1 @@ -382,9 +393,9 @@ dbase.c:123: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }: dbase.c:123: Undocumented modification of db[] possible from call to erc_insert: erc_insert(db[mNON], er) dbase.c:121: Body of if clause of if statement is not a block: - erc_insert(db[mMGRS], er) + erc_insert(db[mMGRS], er); dbase.c:123: Body of else clause of if statement is not a block: - erc_insert(db[mNON], er) + erc_insert(db[mNON], er); dbase.c:126: Undocumented use of global db dbase.c:126: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }: db[fMGRS] @@ -396,11 +407,11 @@ dbase.c:128: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }: dbase.c:128: Undocumented modification of db[] possible from call to erc_insert: erc_insert(db[fNON], er) dbase.c:126: Body of if clause of if statement is not a block: - erc_insert(db[fMGRS], er) + erc_insert(db[fMGRS], er); dbase.c:128: Body of else clause of if statement is not a block: - erc_insert(db[fNON], er) + erc_insert(db[fNON], er); dbase.c:123: Body of if clause of if statement is not a block: - if (e.j == MGR) erc_insert(db[mMGRS], er) else erc_insert(db[mNON], er) + if (e.j == MGR) erc_insert(db[mMGRS], er); else erc_insert(db[mNON], er); dbase.c: (in function fire) dbase.c:137: Assignment of enum { mMGRS, fMGRS, mNON, fNON } to int: i = mMGRS dbase.c:137: Operands of <= have incompatible types (int, enum { mMGRS, fMGRS, @@ -413,10 +424,12 @@ dbase.c:142: Undocumented modification of db[] possible from call to erc_delete: erc_delete(db[i], er) dbase.c:142: Return value (type bool) ignored: erc_delete(db[i]... dbase.c:139: Body of for statement is not a block: - if (eref_get(er).ssNum == ssNum) { erc_iterFinal(it) } + if (eref_get(er).ssNum == ssNum) { erc_iterFinal(it); + erc_delete(db[i], er);; return TRUE } dbase.c:139: Body of for statement is not a block: for (er = erc_yield(it = erc_iterStart(db[i])); !eref_equal(er, erefNIL); - er = erc_yield(it)) if (eref_get(er).ssNum == ssNum) { erc_iterFinal(it) } + er = erc_yield(it)) if (eref_get(er).ssNum == ssNum) { erc_iterFinal(it); + erc_delete(db[i], er);; return TRUE } dbase.c:137: Incompatible types for <= (int, enum { mMGRS, fMGRS, mNON, fNON }) (in post loop test): i <= fNON dbase.c: (in function promote) @@ -464,7 +477,7 @@ dbase.c:227: Undocumented use of global db dbase.c:227: Undetected modification possible from call to unconstrained function _db_addEmpls: _db_addEmpls dbase.c:227: Body of for statement is not a block: - numAdded += _db_addEmpls(db[i], l, h, s) + numAdded += _db_addEmpls(db[i], l, h, s); dbase.c:226: Incompatible types for <= (int, enum { mMGRS, fMGRS, mNON, fNON }) (in post loop test): i <= fNON dbase.c:230: Undocumented use of global db @@ -541,17 +554,26 @@ dbase.c:272: Incompatible types for <= (int, enum { mMGRS, fMGRS, mNON, fNON }) drive.c: (in function main) drive.c:22: Statement has no effect: employee_initMod() drive.c:23: Statement has no effect: empset_initMod() +drive.c:47: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf drive.c:48: Return value (type bool) ignored: employee_setName... drive.c:49: Return value (type bool) ignored: empset_insert(em... +drive.c:63: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf drive.c:64: Return value (type bool) ignored: employee_setName... drive.c:65: Return value (type bool) ignored: empset_delete(em... +drive.c:81: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf drive.c:82: Return value (type bool) ignored: employee_setName... drive.c:83: Return value (type bool) ignored: empset_insert(em... drive.c:107: Return value (type bool) ignored: empset_delete(em... -drive.c:116: Body of if clause of if statement is not a block: e.gen = MALE -drive.c:116: Body of else clause of if statement is not a block: e.gen = FEMALE -drive.c:117: Body of if clause of if statement is not a block: e.j = NONMGR -drive.c:117: Body of else clause of if statement is not a block: e.j = MGR +drive.c:116: Body of if clause of if statement is not a block: e.gen = MALE; +drive.c:116: Body of else clause of if statement is not a block: + e.gen = FEMALE; +drive.c:117: Body of if clause of if statement is not a block: e.j = NONMGR; +drive.c:117: Body of else clause of if statement is not a block: e.j = MGR; +drive.c:118: Buffer overflow possible with sprintf. Recommend using snprintf + instead: sprintf drive.c:119: Return value (type bool) ignored: employee_setName... drive.c:123: Return value (type db_status) ignored: hire(e) drive.c:127: Assignment of db_status to int: j = hire(e) @@ -560,25 +582,25 @@ drive.c:134: Return value (type bool) ignored: fire(17) drive.c:158: Return value (type bool) ignored: fire(empset_choo... drive.c:11: Parameter argv not used dbase.c:11: Type employeeKinds declared but not used -eref.lh:8: Function exported but not used outside eref: eref_free +eref.lh:7: Function exported but not used outside eref: eref_free eref.h:23: Definition of eref_free -empset.lh:8: Function exported but not used outside empset: empset_final +empset.lh:7: Function exported but not used outside empset: empset_final empset.h:29: Definition of empset_final -empset.lh:9: Function exported but not used outside empset: empset_clear +empset.lh:8: Function exported but not used outside empset: empset_clear empset.c:24: Definition of empset_clear -empset.lh:11: Function exported but not used outside empset: +empset.lh:10: Function exported but not used outside empset: empset_insertUnique empset.c:53: Definition of empset_insertUnique -empset.lh:17: Function exported but not used outside empset: empset_member +empset.lh:16: Function exported but not used outside empset: empset_member empset.h:30: Definition of empset_member -empset.lh:18: Function exported but not used outside empset: empset_subset +empset.lh:17: Function exported but not used outside empset: empset_subset empset.c:144: Definition of empset_subset -ereftab.lh:10: Function exported but not used outside ereftab: ereftab_delete +ereftab.lh:9: Function exported but not used outside ereftab: ereftab_delete ereftab.c:26: Definition of ereftab_delete dbase.c:13: Variable exported but not used outside dbase: db -dbase.lh:27: Function exported but not used outside dbase: promote +dbase.lh:26: Function exported but not used outside dbase: promote dbase.c:182: Definition of promote -dbase.lh:28: Function exported but not used outside dbase: setSalary +dbase.lh:27: Function exported but not used outside dbase: setSalary dbase.c:206: Definition of setSalary empset.h:10: Variable exported but not used outside empset: known dbase.c:15: Variable exported but not used outside dbase: initDone @@ -601,58 +623,59 @@ dbase.c:73: Function _db_addEmpls exported but not declared in header file Error Type Reported Suppressed =================== ======== ========= -abstract 2 0 -mayaliasunique 1 0 -exitarg 8 0 -unreachable 1 0 -forempty 1 0 -forblock 11 0 -ifblock 22 0 -redecl 0 7 -incondefs 0 1 +nullret 1 0 +nullstate 1 0 usedef 1 0 -noeffect 11 0 -exporttype 5 0 -exportvar 2 0 -exportconst 2 0 -globs 64 1 -internalglobs 2 0 -warnmissingglobs 1 6 -retvalother 1 0 -retvalbool 16 0 -macroparens 4 0 -usereleased 1 0 compdef 3 0 -compdestroy 1 0 +incondefs 0 1 +sizeoftype 7 0 +formalarray 0 24 +abstract 2 0 mustfreeonly 3 0 +usereleased 1 0 +compdestroy 1 0 branchstate 2 1 onlytrans 1 0 freshtrans 3 0 temptrans 3 2 readonlytrans 6 0 +mayaliasunique 1 0 mods 38 0 mustmod 2 0 modfilesys 0 25 modnomods 4 0 moduncon 20 0 modunconnomods 1 0 +globs 64 1 +internalglobs 2 0 +warnmissingglobs 1 6 +forempty 1 0 +forblock 11 0 +ifblock 22 0 +unreachable 1 0 +noeffect 11 0 +retvalother 1 0 +retvalbool 16 0 +macroparens 4 0 namechecks 11 6 protoparammatch 1 0 -nullret 1 0 -nullstate 1 0 -sizeoftype 7 0 -formalarray 0 24 -type 1 0 -enumindex 24 0 -enumint 15 0 -matchanyintegral 2 0 exportlocal 15 0 exportheader 4 0 exportheadervar 2 0 paramuse 1 0 typeuse 1 0 varuse 4 0 +exitarg 8 0 +redecl 0 7 +exporttype 5 0 +exportvar 2 0 +exportconst 2 0 +type 1 0 +enumindex 24 0 +enumint 15 0 +matchanyintegral 2 0 +bufferoverflowhigh 5 0 ======== ========= -Total 333 73 +Total 338 73 -Finished checking --- 333 code warnings, as expected +Finished checking --- 338 code warnings, as expected