mirror of
https://github.com/clearlinux/hyperstart.git
synced 2026-08-23 23:48:14 +00:00
Merge pull request #85 from bergwolf/strdup
fix a few strdup memory leaks
This commit is contained in:
+3
-1
@@ -523,8 +523,10 @@ static int hyper_container_init(void *data)
|
||||
char dev[128];
|
||||
char *options = NULL;
|
||||
|
||||
if (container->scsiaddr)
|
||||
if (container->scsiaddr) {
|
||||
free(container->image);
|
||||
hyper_find_sd(container->scsiaddr, &container->image);
|
||||
}
|
||||
|
||||
sprintf(dev, "/dev/%s", container->image);
|
||||
fprintf(stdout, "device %s\n", dev);
|
||||
|
||||
+17
-9
@@ -111,7 +111,8 @@ void hyper_sync_time_hctosys() {
|
||||
}
|
||||
}
|
||||
|
||||
int hyper_find_sd(char *addr, char **dev) {
|
||||
int hyper_find_sd(char *addr, char **dev)
|
||||
{
|
||||
struct dirent **list;
|
||||
struct dirent *dir;
|
||||
char path[512];
|
||||
@@ -152,30 +153,30 @@ int hyper_mkdir(char *hyper_path)
|
||||
|
||||
if (path == NULL) {
|
||||
errno = ENOMEM;
|
||||
return -1;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (stat(path, &st) >= 0) {
|
||||
if (S_ISDIR(st.st_mode))
|
||||
return 0;
|
||||
goto out;
|
||||
errno = ENOTDIR;
|
||||
return -1;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (errno != ENOENT)
|
||||
return -1;
|
||||
goto fail;
|
||||
|
||||
p = strrchr(path, '/');
|
||||
if (p == NULL) {
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (p != path) {
|
||||
*p = '\0';
|
||||
|
||||
if (hyper_mkdir(path) < 0)
|
||||
return -1;
|
||||
goto fail;
|
||||
|
||||
*p = '/';
|
||||
}
|
||||
@@ -183,10 +184,15 @@ int hyper_mkdir(char *hyper_path)
|
||||
fprintf(stdout, "create directory %s\n", path);
|
||||
if (mkdir(path, 0755) < 0 && errno != EEXIST) {
|
||||
perror("failed to create directory");
|
||||
return -1;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
out:
|
||||
free(path);
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
free(path);
|
||||
return -1;
|
||||
}
|
||||
|
||||
void online_cpu(void)
|
||||
@@ -519,6 +525,8 @@ static void hyper_unmount_all(void)
|
||||
fprintf(stdout, ("umount %s: %s failed\n"),
|
||||
filesys, strerror(errno));
|
||||
}
|
||||
free(filesys);
|
||||
mntlist[i] = NULL;
|
||||
}
|
||||
|
||||
sync();
|
||||
|
||||
Reference in New Issue
Block a user