chiark / gitweb /
hwclock: add missing OOM check
[elogind.git] / src / shared / hwclock.c
index 67eb2eff8b0782c0a650f6418dc08527949d836f..0e8fa45971325704640a701af5666d8e50c76684 100644 (file)
@@ -61,10 +61,11 @@ static int rtc_open(int flags) {
 
         for (;;) {
                 char *p, *v;
-                struct dirent buf, *de;
+                struct dirent *de;
+                union dirent_storage buf;
                 int r;
 
-                r = readdir_r(d, &buf, &de);
+                r = readdir_r(d, &buf.de, &de);
                 if (r != 0)
                         goto fallback;
 
@@ -93,6 +94,11 @@ static int rtc_open(int flags) {
                         continue;
 
                 p = strappend("/dev/", de->d_name);
+                if (!p) {
+                        closedir(d);
+                        return -ENOMEM;
+                }
+
                 fd = open(p, flags);
                 free(p);