I've been working through the code base with the cppcheck GUI program--remarkably few issues, actually--and have hit one in qtc_log.c that has me a bit stumped. For reference start at line 198, the definition of the store_qtc() function:
https://github.com/Tlf/tlf/blob/c677a3b72ba5536753b053f84634e99fa37a351a/src/qtc_log.c#L198 The cppcheck warning is: Line 225: Either the condition 'tempi==20000' is redundant or the array 'qsoflags_for_qtc[20000]' is accessed at index 20000, which is out of bounds. and a pair of notes: Line 230: Assuming that condition 'tempi==20000' is not redundant Line 225: Array index out of bounds Here is the relevant part of the function: 214 if (direction == SEND) { 215 /* find maximum sent QTC block serial */ 216 g_strlcpy(temps, loglineptr + 50, 5); // get serial of qtc block 217 tempi = atoi(temps); 218 if (tempi > nr_qtcsent) { 219 nr_qtcsent = tempi; 220 } 221 222 /* mark corresponding qso line as used for QTC */ 223 g_strlcpy(temps, loglineptr + 12, 5); // qso nr in qso list 224 tempi = atoi(temps) - 1; 225 qsoflags_for_qtc[tempi] = 1; 226 227 /* find first unused QSO number for QTCs */ 228 if (tempi == next_qtc_qso && tempi < MAX_QSOS) { 229 while (qsoflags_for_qtc[tempi++] == 1) { 230 if (tempi == MAX_QSOS) 231 break; 232 next_qtc_qso = tempi; 233 } 234 } 235 } Now, it's quite possible that cppcheck is getting tripped up in some manner. That said, I do think the array index and assignment on line 225 should be protected to assure the array index does not exceed MAX_QSOS, i.e. tempi be tested after its assignment by atoi(). It appears that Ervin and Tom have touched that file the most so I'm reluctant to mess with it (I don't understand the QTC you WAE guys do!). I'll do a pull request for the other warnings to let everyone take a look. 73, Nate -- "The optimist proclaims that we live in the best of all possible worlds. The pessimist fears this is true." Web: https://www.n0nb.us Projects: https://github.com/N0NB GPG fingerprint: 82D6 4F6B 0E67 CD41 F689 BBA6 FB2C 5130 D55A 8819
signature.asc
Description: PGP signature