diff options
| author | Shehjar Tikoo <shehjart@gluster.com> | 2009-05-24 23:05:26 +0000 | 
|---|---|---|
| committer | Anand V. Avati <avati@dev.gluster.com> | 2009-06-02 23:15:03 -0700 | 
| commit | a29ec1f1484902400f08b24ed777ea984923ffea (patch) | |
| tree | 810a9222fbebfdf1e3aa231a08319d1207363659 | |
| parent | f888b3f5be4be893323b644dba0668ae3d40228e (diff) | |
booster: Clean-up handling of log/fstab env variables
Handle two cases when deciding log/fstab file:
1. It turns out that that strdup or strlen doesnt actually
check for NULL before trying to do its thing with the string
so it seg-faults on seeing a NULL char pointer.
2. getenv can return an empty string if the
env var was exported as:
$ export GLUSTEFS_BOOSTER_LOG=
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
| -rw-r--r-- | booster/src/booster.c | 19 | 
1 files changed, 14 insertions, 5 deletions
diff --git a/booster/src/booster.c b/booster/src/booster.c index b51cc25ca..cb35be519 100644 --- a/booster/src/booster.c +++ b/booster/src/booster.c @@ -376,6 +376,7 @@ mbp_open (int fd, dev_t file_devno)          FILE *specfp = NULL;          int32_t file_size = -1;          int ret = -1; +        char *logfile = NULL;          glusterfs_handle_t handle = NULL;          glusterfs_init_params_t ctx = { @@ -409,8 +410,13 @@ mbp_open (int fd, dev_t file_devno)                  goto out;          fseek (specfp, 0L, SEEK_SET); -        ctx.logfile = strdup (getenv (BOOSTER_LOG_ENV_VAR)); -        if (!ctx.logfile) +        logfile = getenv (BOOSTER_LOG_ENV_VAR); +        if (logfile) { +                if (strlen (logfile) > 0) +                        ctx.logfile = strdup (logfile); +                else +                        ctx.logfile = strdup (BOOSTER_DEFAULT_LOG); +        } else                  ctx.logfile = strdup (BOOSTER_DEFAULT_LOG);          ctx.specfp = specfp; @@ -1178,10 +1184,13 @@ booster_init (void)           * socket calls will fall-back to the real API.           */          booster_conf_path = getenv (BOOSTER_CONF_ENV_VAR); -        if (booster_conf_path == NULL) +        if (booster_conf_path != NULL) { +                if (strlen (booster_conf_path) > 0) +                        ret = booster_configure (booster_conf_path); +                else +                        ret = booster_configure (DEFAULT_BOOSTER_CONF); +        } else                  ret = booster_configure (DEFAULT_BOOSTER_CONF); -        else -                ret = booster_configure (booster_conf_path);          if (ret == 0)                  gf_log ("booster", GF_LOG_DEBUG, "booster is inited");  | 
