Unverified Commit e2f9a4ef by 2xsec Committed by Christian Brauner

storage_utils: add error handling

Signed-off-by: 's avatar2xsec <dh48.jeong@samsung.com>
parent b76767e1
...@@ -153,12 +153,18 @@ int blk_getsize(struct lxc_storage *bdev, uint64_t *size) ...@@ -153,12 +153,18 @@ int blk_getsize(struct lxc_storage *bdev, uint64_t *size)
const char *src; const char *src;
src = lxc_storage_get_path(bdev->src, bdev->type); src = lxc_storage_get_path(bdev->src, bdev->type);
fd = open(src, O_RDONLY);
if (fd < 0) fd = open(src, O_RDONLY | O_CLOEXEC);
if (fd < 0) {
SYSERROR("Failed to open \"%s\"", src);
return -1; return -1;
}
/* size of device in bytes */ /* size of device in bytes */
ret = ioctl(fd, BLKGETSIZE64, size); ret = ioctl(fd, BLKGETSIZE64, size);
if (ret < 0)
SYSERROR("Failed to get block size of dev-src");
close(fd); close(fd);
return ret; return ret;
} }
...@@ -195,11 +201,16 @@ int detect_fs(struct lxc_storage *bdev, char *type, int len) ...@@ -195,11 +201,16 @@ int detect_fs(struct lxc_storage *bdev, char *type, int len)
srcdev = lxc_storage_get_path(bdev->src, bdev->type); srcdev = lxc_storage_get_path(bdev->src, bdev->type);
ret = pipe(p); ret = pipe(p);
if (ret < 0) if (ret < 0) {
SYSERROR("Failed to create pipe");
return -1; return -1;
}
if ((pid = fork()) < 0) pid = fork();
if (pid < 0) {
SYSERROR("Failed to fork process");
return -1; return -1;
}
if (pid > 0) { if (pid > 0) {
int status; int status;
...@@ -409,8 +420,10 @@ const char *linkderef(const char *path, char *dest) ...@@ -409,8 +420,10 @@ const char *linkderef(const char *path, char *dest)
ssize_t ret; ssize_t ret;
ret = stat(path, &sbuf); ret = stat(path, &sbuf);
if (ret < 0) if (ret < 0) {
SYSERROR("Failed to get status of file - \"%s\"", path);
return NULL; return NULL;
}
if (!S_ISLNK(sbuf.st_mode)) if (!S_ISLNK(sbuf.st_mode))
return path; return path;
...@@ -517,20 +530,22 @@ int storage_destroy_wrapper(void *data) ...@@ -517,20 +530,22 @@ int storage_destroy_wrapper(void *data)
struct lxc_conf *conf = data; struct lxc_conf *conf = data;
if (setgid(0) < 0) { if (setgid(0) < 0) {
ERROR("Failed to setgid to 0"); SYSERROR("Failed to setgid to 0");
return -1; return -1;
} }
if (setgroups(0, NULL) < 0) if (setgroups(0, NULL) < 0)
WARN("Failed to clear groups"); SYSWARN("Failed to clear groups");
if (setuid(0) < 0) { if (setuid(0) < 0) {
ERROR("Failed to setuid to 0"); SYSERROR("Failed to setuid to 0");
return -1; return -1;
} }
if (!storage_destroy(conf)) if (!storage_destroy(conf)) {
ERROR("Failed to destroy storage");
return -1; return -1;
}
return 0; return 0;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment