Fix assert message to avoid printing garbage
authorMichael Meffie <mmeffie@sinenomine.net>
Wed, 15 Jul 2009 16:46:56 +0000 (12:46 -0400)
committerRuss Allbery <rra@stanford.edu>
Wed, 15 Jul 2009 18:01:52 +0000 (12:01 -0600)
Fix an off by one error in assert() to avoid printing garbage
characters to the log. Remove the newline character generated by
ctime() to match the format generated by the other logging functions.

FIXES 124613

Reviewed-on: http://gerrit.openafs.org/102
Verified-by: Russ Allbery <rra@stanford.edu>
Reviewed-by: Russ Allbery <rra@stanford.edu>

src/util/assert.c

index 4755f22..2368659 100644 (file)
@@ -28,16 +28,19 @@ afs_NTAbort(void)
 }
 #endif
 
+#define TIMESTAMP_BUFFER_SIZE 26  /* including the null */
+#define TIMESTAMP_NEWLINE_POS 24  /* offset to the newline placed by ctime */
 
 void
 AssertionFailed(char *file, int line)
 {
-    char tdate[26];
+    char tdate[TIMESTAMP_BUFFER_SIZE];
     time_t when;
 
     time(&when);
-    (void)afs_ctime(&when, tdate, 25);
-    fprintf(stderr, "%s: Assertion failed! file %s, line %d.\n", tdate, file,
+    (void)afs_ctime(&when, tdate, sizeof(tdate));
+    tdate[TIMESTAMP_NEWLINE_POS] = ' ';
+    fprintf(stderr, "%sAssertion failed! file %s, line %d.\n", tdate, file,
            line);
     fflush(stderr);
 #ifdef AFS_NT40_ENV