s390utils/0069-cmsfs-fuse-Unable-to-u...

63 lines
1.6 KiB
Diff

From 3a7a5e5eaec3aff2e078a91b76f09eb4ae7f8778 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
Date: Tue, 29 Mar 2011 10:50:37 +0200
Subject: [PATCH 69/70] cmsfs-fuse: Unable to use cmsfs-fuse if $HOME is not set
Description: cmsfs-fuse: Unable to use cmsfs-fuse if $HOME is not set.
Symptom: Segmentation fault while starting cmsfs-fuse.
Problem: Missing malloc if $HOME environment variable is not set.
Solution: Allocate the string buffer before the $HOME query.
---
cmsfs-fuse/config.c | 22 ++++++++++++----------
1 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/cmsfs-fuse/config.c b/cmsfs-fuse/config.c
index 9f9de45..f89e444 100644
--- a/cmsfs-fuse/config.c
+++ b/cmsfs-fuse/config.c
@@ -26,21 +26,20 @@ char *conffile;
int open_conf_file(FILE **fh)
{
- const char *home_env = getenv("HOME");
-
- if (home_env == NULL)
- goto no_home;
+ const char *home_env;
conffile = malloc(4096);
if (conffile == NULL)
DIE_PERROR("malloc failed");
+
+ home_env = getenv("HOME");
+ if (home_env == NULL)
+ goto no_home;
+
sprintf(conffile, "%s/.cmsfs-fuse/filetypes.conf", home_env);
*fh = fopen(conffile, "r");
- if (*fh == NULL)
- goto no_home;
-out:
- DEBUG("using config file: %s\n", conffile);
- return 0;
+ if (*fh != NULL)
+ goto out;
no_home:
sprintf(conffile, "%s/%s", TOOLS_SYSCONFDIR,
@@ -50,7 +49,10 @@ no_home:
free(conffile);
return -ENOENT;
}
- goto out;
+out:
+ DEBUG("using config file: %s\n", conffile);
+ free(conffile);
+ return 0;
}
void add_filetype(char *name, struct list *head)
--
1.7.4