diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-09-19 22:21:09 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-09-19 22:21:09 +0200 |
commit | 7d5e9c0f60cddf01ec803012cbdc02d2f55b78c1 (patch) | |
tree | ecb5dc336ce9e0ecf6d5e3b6757b0a10f7f1e692 /src/shared/conf-files.c | |
parent | 57f3067825d9361d7487f272bfaff3b36c684c62 (diff) |
util: define union dirent_storage and make use of it everywhere
Make sure to allocate enough space for readdir_r().
https://bugzilla.redhat.com/show_bug.cgi?id=858754
Diffstat (limited to 'src/shared/conf-files.c')
-rw-r--r-- | src/shared/conf-files.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c index 83e4cce156..34b86293d3 100644 --- a/src/shared/conf-files.c +++ b/src/shared/conf-files.c @@ -39,7 +39,6 @@ static int files_add(Hashmap *h, const char *path, const char *suffix) { DIR *dir; - struct dirent buffer, *de; int r = 0; dir = opendir(path); @@ -50,10 +49,12 @@ static int files_add(Hashmap *h, const char *path, const char *suffix) { } for (;;) { + struct dirent *de; + union dirent_storage buf; int k; char *p; - k = readdir_r(dir, &buffer, &de); + k = readdir_r(dir, &buf.de, &de); if (k != 0) { r = -k; goto finish; |