From: Lennart Poettering Date: Wed, 8 Aug 2012 21:54:21 +0000 (+0200) Subject: fix a couple of issues found with llvm-analyze X-Git-Tag: v189~110 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=64825d3c589cd8742887f30acde8c57eceac2001 fix a couple of issues found with llvm-analyze --- diff --git a/src/core/namespace.c b/src/core/namespace.c index 4bef15fdf..ce10c7907 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -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, diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index c6bc65aec..386714b4f 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -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(); diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index b840124c9..718dc5d6e 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -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; diff --git a/src/libudev/libudev-list.c b/src/libudev/libudev-list.c index aec334bcf..5d09b5d2d 100644 --- a/src/libudev/libudev-list.c +++ b/src/libudev/libudev-list.c @@ -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; diff --git a/src/readahead/readahead-analyze.c b/src/readahead/readahead-analyze.c index 53892b0cf..11b2b2dc1 100644 --- a/src/readahead/readahead-analyze.c +++ b/src/readahead/readahead-analyze.c @@ -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; diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index b6e6a8581..60eb896ad 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -273,6 +273,7 @@ finish: free(message); free(monotonic); free(realtime); + free(priority); return r; } diff --git a/src/shared/utf8.c b/src/shared/utf8.c index a6f5b3f9e..ea7483f50 100644 --- a/src/shared/utf8.c +++ b/src/shared/utf8.c @@ -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;