chiark / gitweb /
fix a couple of issues found with llvm-analyze
authorLennart Poettering <lennart@poettering.net>
Wed, 8 Aug 2012 21:54:21 +0000 (23:54 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 8 Aug 2012 21:54:21 +0000 (23:54 +0200)
src/core/namespace.c
src/cryptsetup/cryptsetup-generator.c
src/journal/journal-file.c
src/libudev/libudev-list.c
src/readahead/readahead-analyze.c
src/shared/logs-show.c
src/shared/utf8.c

index 4bef15f..ce10c79 100644 (file)
@@ -312,6 +312,8 @@ int setup_namespace(
                 goto undo_mounts;
         }
 
+        free(paths);
+
         t = old_root_dir + sizeof(root_dir) - 1;
         if (umount2(t, MNT_DETACH) < 0)
                 /* At this point it's too late to turn anything back,
index c6bc65a..386714b 100644 (file)
@@ -374,8 +374,8 @@ int main(int argc, char *argv[]) {
                 if (startswith(p, "luks-"))
                         p += 5;
 
-                name = strappend("luks-", *i);
-                device = strappend("UUID=", *i);
+                name = strappend("luks-", p);
+                device = strappend("UUID=", p);
 
                 if (!name || !device) {
                         log_oom();
index b840124..718dc5d 100644 (file)
@@ -788,7 +788,7 @@ static int journal_file_append_data(
         }
 #endif
 
-        if (!compressed)
+        if (!compressed && size > 0)
                 memcpy(o->data.payload, data, size);
 
         r = journal_file_link_data(f, o, p, hash);
@@ -1057,7 +1057,8 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st
             ts->monotonic < le64toh(f->header->tail_entry_monotonic))
                 return -EINVAL;
 
-        items = alloca(sizeof(EntryItem) * n_iovec);
+        /* alloca() can't take 0, hence let's allocate at least one */
+        items = alloca(sizeof(EntryItem) * MAX(1, n_iovec));
 
         for (i = 0; i < n_iovec; i++) {
                 uint64_t p;
@@ -2336,7 +2337,8 @@ int journal_directory_vacuum(const char *directory, uint64_t max_use, uint64_t m
                 n_list ++;
         }
 
-        qsort(list, n_list, sizeof(struct vacuum_info), vacuum_compare);
+        if (n_list > 0)
+                qsort(list, n_list, sizeof(struct vacuum_info), vacuum_compare);
 
         for(i = 0; i < n_list; i++) {
                 struct statvfs ss;
index aec334b..5d09b5d 100644 (file)
@@ -186,6 +186,7 @@ struct udev_list_entry *udev_list_entry_add(struct udev_list *list, const char *
                         if (list->entries == NULL) {
                                 free(entry->name);
                                 free(entry->value);
+                                free(entry);
                                 return NULL;
                         }
                         list->entries_max += add;
index 53892b0..11b2b2d 100644 (file)
@@ -135,11 +135,11 @@ int main_analyze(const char *pack_path) {
         printf("\nHOST:    %s"
                "TYPE:    %c\n"
                "MISSING: %d\n"
-               "TOTAL:   %ld\n",
+               "TOTAL:   %llu\n",
                line,
                a,
                missing,
-               tsize);
+               (unsigned long long) tsize);
 
         return EXIT_SUCCESS;
 
index b6e6a85..60eb896 100644 (file)
@@ -273,6 +273,7 @@ finish:
         free(message);
         free(monotonic);
         free(realtime);
+        free(priority);
 
         return r;
 }
index a6f5b3f..ea7483f 100644 (file)
@@ -275,7 +275,7 @@ char *ascii_filter(const char *str) {
         if (!r)
                 return NULL;
 
-        for (s = r, d = r; *s; s++)
+        for (s = str, d = r; *s; s++)
                 if ((unsigned char) *s < 128)
                         *(d++) = *s;