chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
9d05dd2
)
mount: be more careful about errors when parsing mtab
author
Zbigniew Jędrzejewski-Szmek
<zbyszek@in.waw.pl>
Fri, 28 Nov 2014 18:02:15 +0000
(13:02 -0500)
committer
Zbigniew Jędrzejewski-Szmek
<zbyszek@in.waw.pl>
Fri, 28 Nov 2014 19:30:50 +0000
(14:30 -0500)
Fixup for
4a3a9ef610
.
src/core/mount.c
patch
|
blob
|
history
diff --git
a/src/core/mount.c
b/src/core/mount.c
index bccf6c5bfa8098e7426d2be8daf6361d0ee1677a..679d15c50a4767618d6e4d803dc6fe060cc914ce 100644
(file)
--- a/
src/core/mount.c
+++ b/
src/core/mount.c
@@
-1535,15
+1535,22
@@
static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
if (!tb || !itr)
return log_oom();
if (!tb || !itr)
return log_oom();
- mnt_table_parse_mtab(tb, NULL);
- if (r)
+
r =
mnt_table_parse_mtab(tb, NULL);
+ if (r
< 0
)
return r;
return r;
- while (mnt_table_next_fs(tb, itr, &fs) == 0) {
+ r = 0;
+ for (;;) {
const char *device, *path, *options, *fstype;
_cleanup_free_ const char *d = NULL, *p = NULL;
int k;
const char *device, *path, *options, *fstype;
_cleanup_free_ const char *d = NULL, *p = NULL;
int k;
+ k = mnt_table_next_fs(tb, itr, &fs);
+ if (k == 1)
+ break;
+ else if (k < 0)
+ return log_error_errno(k, "Failed to get next entry from /etc/fstab: %m");
+
device = mnt_fs_get_source(fs);
path = mnt_fs_get_target(fs);
options = mnt_fs_get_options(fs);
device = mnt_fs_get_source(fs);
path = mnt_fs_get_target(fs);
options = mnt_fs_get_options(fs);
@@
-1555,7
+1562,7
@@
static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
return log_oom();
k = mount_add_one(m, d, p, options, fstype, set_flags);
return log_oom();
k = mount_add_one(m, d, p, options, fstype, set_flags);
- if (k < 0)
+ if (
r == 0 &&
k < 0)
r = k;
}
r = k;
}