udev: avoid coredump when initializing udev builtins

If one of the macros(HAVE_BLKID/HAVE_KMOD/HAVE_ACL) is not
defined, there will be a coredump
This commit is contained in:
Lidong Zhong
2015-07-28 19:07:05 +08:00
parent 7ee7b225bd
commit 8cacf69b1b
+6 -5
View File
@@ -52,7 +52,7 @@ void udev_builtin_init(struct udev *udev) {
return; return;
for (i = 0; i < ELEMENTSOF(builtins); i++) for (i = 0; i < ELEMENTSOF(builtins); i++)
if (builtins[i]->init) if (builtins[i] && builtins[i]->init)
builtins[i]->init(udev); builtins[i]->init(udev);
initialized = true; initialized = true;
@@ -65,7 +65,7 @@ void udev_builtin_exit(struct udev *udev) {
return; return;
for (i = 0; i < ELEMENTSOF(builtins); i++) for (i = 0; i < ELEMENTSOF(builtins); i++)
if (builtins[i]->exit) if (builtins[i] && builtins[i]->exit)
builtins[i]->exit(udev); builtins[i]->exit(udev);
initialized = false; initialized = false;
@@ -75,7 +75,7 @@ bool udev_builtin_validate(struct udev *udev) {
unsigned int i; unsigned int i;
for (i = 0; i < ELEMENTSOF(builtins); i++) for (i = 0; i < ELEMENTSOF(builtins); i++)
if (builtins[i]->validate && builtins[i]->validate(udev)) if (builtins[i] && builtins[i]->validate && builtins[i]->validate(udev))
return true; return true;
return false; return false;
} }
@@ -84,7 +84,8 @@ void udev_builtin_list(struct udev *udev) {
unsigned int i; unsigned int i;
for (i = 0; i < ELEMENTSOF(builtins); i++) for (i = 0; i < ELEMENTSOF(builtins); i++)
fprintf(stderr, " %-14s %s\n", builtins[i]->name, builtins[i]->help); if (builtins[i])
fprintf(stderr, " %-14s %s\n", builtins[i]->name, builtins[i]->help);
} }
const char *udev_builtin_name(enum udev_builtin_cmd cmd) { const char *udev_builtin_name(enum udev_builtin_cmd cmd) {
@@ -105,7 +106,7 @@ enum udev_builtin_cmd udev_builtin_lookup(const char *command) {
if (pos) if (pos)
pos[0] = '\0'; pos[0] = '\0';
for (i = 0; i < ELEMENTSOF(builtins); i++) for (i = 0; i < ELEMENTSOF(builtins); i++)
if (streq(builtins[i]->name, name)) if (builtins[i] && streq(builtins[i]->name, name))
return i; return i;
return UDEV_BUILTIN_MAX; return UDEV_BUILTIN_MAX;
} }