Fossil SCM

Use fossil_strnicmp() instead of memcmp() for date comparisons, to avoid NULL-pointer deferences if something is wrong with the database and a NULL date is returned from a query.

drh 2014-01-07 16:05 trunk
Commit 29b2eebaaa9095e270140b45becb130b2f9b6d7a
1 file changed +2 -2
+2 -2
--- src/timeline.c
+++ src/timeline.c
@@ -320,11 +320,11 @@
320320
prevWasDivider = 1;
321321
continue;
322322
}
323323
prevWasDivider = 0;
324324
if( dateFormat<2 ){
325
- if( memcmp(zDate, zPrevDate, 10) ){
325
+ if( fossil_strnicmp(zDate, zPrevDate, 10) ){
326326
sqlite3_snprintf(sizeof(zPrevDate), zPrevDate, "%.10s", zDate);
327327
@ <tr><td>
328328
@ <div class="divider timelineDate">%s(zPrevDate)</div>
329329
@ </td><td></td><td></td></tr>
330330
}
@@ -1597,11 +1597,11 @@
15971597
fossil_print("--- entry limit (%d) reached ---\n", nAbsLimit);
15981598
break; /* entry count limit hit, stop. */
15991599
}
16001600
}
16011601
sqlite3_snprintf(sizeof(zUuid), zUuid, "%.10s", zId);
1602
- if( memcmp(zDate, zPrevDate, 10) ){
1602
+ if( fossil_strnicmp(zDate, zPrevDate, 10) ){
16031603
fossil_print("=== %.10s ===\n", zDate);
16041604
memcpy(zPrevDate, zDate, 10);
16051605
nLine++; /* record another line */
16061606
}
16071607
if( zCom==0 ) zCom = "";
16081608
--- src/timeline.c
+++ src/timeline.c
@@ -320,11 +320,11 @@
320 prevWasDivider = 1;
321 continue;
322 }
323 prevWasDivider = 0;
324 if( dateFormat<2 ){
325 if( memcmp(zDate, zPrevDate, 10) ){
326 sqlite3_snprintf(sizeof(zPrevDate), zPrevDate, "%.10s", zDate);
327 @ <tr><td>
328 @ <div class="divider timelineDate">%s(zPrevDate)</div>
329 @ </td><td></td><td></td></tr>
330 }
@@ -1597,11 +1597,11 @@
1597 fossil_print("--- entry limit (%d) reached ---\n", nAbsLimit);
1598 break; /* entry count limit hit, stop. */
1599 }
1600 }
1601 sqlite3_snprintf(sizeof(zUuid), zUuid, "%.10s", zId);
1602 if( memcmp(zDate, zPrevDate, 10) ){
1603 fossil_print("=== %.10s ===\n", zDate);
1604 memcpy(zPrevDate, zDate, 10);
1605 nLine++; /* record another line */
1606 }
1607 if( zCom==0 ) zCom = "";
1608
--- src/timeline.c
+++ src/timeline.c
@@ -320,11 +320,11 @@
320 prevWasDivider = 1;
321 continue;
322 }
323 prevWasDivider = 0;
324 if( dateFormat<2 ){
325 if( fossil_strnicmp(zDate, zPrevDate, 10) ){
326 sqlite3_snprintf(sizeof(zPrevDate), zPrevDate, "%.10s", zDate);
327 @ <tr><td>
328 @ <div class="divider timelineDate">%s(zPrevDate)</div>
329 @ </td><td></td><td></td></tr>
330 }
@@ -1597,11 +1597,11 @@
1597 fossil_print("--- entry limit (%d) reached ---\n", nAbsLimit);
1598 break; /* entry count limit hit, stop. */
1599 }
1600 }
1601 sqlite3_snprintf(sizeof(zUuid), zUuid, "%.10s", zId);
1602 if( fossil_strnicmp(zDate, zPrevDate, 10) ){
1603 fossil_print("=== %.10s ===\n", zDate);
1604 memcpy(zPrevDate, zDate, 10);
1605 nLine++; /* record another line */
1606 }
1607 if( zCom==0 ) zCom = "";
1608

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button