When run the below command:
lxc-start -n name -f /path/to/config

If config is not a regular file, lxc-start will be killed by SEG FAULT
directly.

Exit with some error message to improve user experience.

Signed-off-by: Yang Shi <yang....@linaro.org>
---
 src/lxc/lxc_start.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c
index 6b942ac..d1cf779 100644
--- a/src/lxc/lxc_start.c
+++ b/src/lxc/lxc_start.c
@@ -212,6 +212,7 @@ int main(int argc, char *argv[])
                NULL,
        };
        struct lxc_container *c;
+       struct stat st_stat = {0};
 
        lxc_list_init(&defines);
 
@@ -242,6 +243,18 @@ int main(int argc, char *argv[])
        /* rcfile is specified in the cli option */
        if (my_args.rcfile) {
                rcfile = (char *)my_args.rcfile;
+               tmp = stat(rcfile, &st_stat);
+
+               if (tmp && errno == ENOENT) {
+                       ERROR("The config path doesn't exist.\n");
+                       return err;
+               }
+
+               if (!tmp && !S_ISREG(st_stat.st_mode)) {
+                       ERROR("The config is not a regular file.\n");
+                       return err;
+               }
+
                c = lxc_container_new(my_args.name, lxcpath);
                if (!c) {
                        ERROR("Failed to create lxc_container");
-- 
2.0.2

_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to