chiark / gitweb /
journald: fix some xsprrintf() buffer size fallout
[elogind.git] / src / journal / test-journal-flush.c
index e61e87af1055e83bf7b3435330afb9fd686e071c..914ca0b4d1da1313078d5090c5b7bf0e986e75b8 100644 (file)
 #include <fcntl.h>
 
 #include "sd-journal.h"
+#include "macro.h"
 #include "journal-file.h"
 #include "journal-internal.h"
 
 int main(int argc, char *argv[]) {
 
-        char fn[sizeof("/var/tmp/test-journal-flush-")-1 + DECIMAL_STR_MAX(pid_t) + sizeof(".journal")];
+        char dn[] = "/var/tmp/test-journal-flush.XXXXXX", *fn;
         JournalFile *new_journal = NULL;
         sd_journal *j = NULL;
         unsigned n = 0;
         int r;
 
-        sprintf(fn, "/var/tmp/test-journal-flush-%lu.journal", (unsigned long) getpid());
+        assert_se(mkdtemp(dn));
+        fn = strappend(dn, "/test.journal");
 
         r = journal_file_open(fn, O_CREAT|O_RDWR, 0644, false, false, NULL, NULL, NULL, &new_journal);
         assert_se(r >= 0);
 
-        unlink(fn);
-
         r = sd_journal_open(&j, 0);
         assert_se(r >= 0);
 
@@ -50,13 +50,13 @@ int main(int argc, char *argv[]) {
                 JournalFile *f;
 
                 f = j->current_file;
-                assert(f && f->current_offset > 0);
+                assert_se(f && f->current_offset > 0);
 
                 r = journal_file_move_to_object(f, OBJECT_ENTRY, f->current_offset, &o);
-                assert(r >= 0);
+                assert_se(r >= 0);
 
                 r = journal_file_copy_entry(f, new_journal, o, f->current_offset, NULL, NULL, NULL);
-                assert(r >= 0);
+                assert_se(r >= 0);
 
                 n++;
                 if (n > 10000)
@@ -67,5 +67,8 @@ int main(int argc, char *argv[]) {
 
         journal_file_close(new_journal);
 
+        unlink(fn);
+        assert_se(rmdir(dn) == 0);
+
         return 0;
 }