diff options
Diffstat (limited to 'libglusterfs')
| -rw-r--r-- | libglusterfs/src/common-utils.c | 19 | ||||
| -rw-r--r-- | libglusterfs/src/daemon.c | 9 | ||||
| -rw-r--r-- | libglusterfs/src/mem-pool.c | 3 | ||||
| -rw-r--r-- | libglusterfs/src/options.c | 4 | ||||
| -rw-r--r-- | libglusterfs/src/statedump.c | 21 | ||||
| -rw-r--r-- | libglusterfs/src/statedump.h | 4 | 
6 files changed, 49 insertions, 11 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 2d4415f50..e7d54d48b 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -357,6 +357,9 @@ gf_print_trace (int32_t signum)          /* Pending frames, (if any), list them in order */          ret = write (fd, "pending frames:\n", 16); +        if (ret < 0) +                goto out; +          {                  glusterfs_ctx_t *ctx = glusterfs_ctx_get ();                  struct list_head *trav = ((call_pool_t *)ctx->pool)->all_frames.next; @@ -372,16 +375,25 @@ gf_print_trace (int32_t signum)                                           gf_mgmt_list[tmp->root->op]);                          ret = write (fd, msg, strlen (msg)); +                        if (ret < 0) +                                goto out; +                          trav = trav->next;                  }                  ret = write (fd, "\n", 1); +                if (ret < 0) +                        goto out;          }          sprintf (msg, "patchset: %s\n", GLUSTERFS_REPOSITORY_REVISION);          ret = write (fd, msg, strlen (msg)); +        if (ret < 0) +                goto out;          sprintf (msg, "signal received: %d\n", signum);          ret = write (fd, msg, strlen (msg)); +        if (ret < 0) +                goto out;          {                  /* Dump the timestamp of the crash too, so the previous logs @@ -390,7 +402,11 @@ gf_print_trace (int32_t signum)                  tm    = localtime (&utime);                  strftime (timestr, 256, "%Y-%m-%d %H:%M:%S\n", tm);                  ret = write (fd, "time of crash: ", 15); +                if (ret < 0) +                        goto out;                  ret = write (fd, timestr, strlen (timestr)); +                if (ret < 0) +                        goto out;          }          gf_dump_config_flags (fd); @@ -404,9 +420,12 @@ gf_print_trace (int32_t signum)                  backtrace_symbols_fd (&array[1], size-1, fd);                  sprintf (msg, "---------\n");                  ret = write (fd, msg, strlen (msg)); +                if (ret < 0) +                        goto out;          }  #endif /* HAVE_BACKTRACE */ +out:          /* Send a signal to terminate the process */          signal (signum, SIG_DFL);          raise (signum); diff --git a/libglusterfs/src/daemon.c b/libglusterfs/src/daemon.c index 51b14810c..778196164 100644 --- a/libglusterfs/src/daemon.c +++ b/libglusterfs/src/daemon.c @@ -29,7 +29,6 @@ os_daemon_return (int nochdir, int noclose)  	int     ret  = -1;          FILE    *ptr = NULL; -  	ret = fork();  	if (ret)  		return ret; @@ -46,8 +45,16 @@ os_daemon_return (int nochdir, int noclose)          if (!noclose) {                  ptr = freopen (DEVNULLPATH, "r", stdin); +                if (!ptr) +                        goto out; +                  ptr = freopen (DEVNULLPATH, "w", stdout); +                if (!ptr) +                        goto out; +                  ptr = freopen (DEVNULLPATH, "w", stderr); +                if (!ptr) +                        goto out;  	}          ret = 0; diff --git a/libglusterfs/src/mem-pool.c b/libglusterfs/src/mem-pool.c index 95e91567e..4cad56dd9 100644 --- a/libglusterfs/src/mem-pool.c +++ b/libglusterfs/src/mem-pool.c @@ -336,6 +336,9 @@ mem_pool_new_fn (unsigned long sizeof_type,                  return NULL;          ret = gf_asprintf (&mem_pool->name, "%s:%s", THIS->name, name); +        if (ret < 0) +                return NULL; +          if (!mem_pool->name) {                  GF_FREE (mem_pool);                  return NULL; diff --git a/libglusterfs/src/options.c b/libglusterfs/src/options.c index 1e6413cc0..b8d3b6ae5 100644 --- a/libglusterfs/src/options.c +++ b/libglusterfs/src/options.c @@ -647,6 +647,10 @@ xl_opt_validate (dict_t *dict, char *key, data_t *value, void *data)                  return;          ret = xlator_option_validate (xl, key, value->data, opt, &errstr); +        if (ret) +                gf_log (xl->name, GF_LOG_WARNING, "validate of %s returned %d", +                        key, ret); +          if (errstr)                  /* possible small leak of previously set stub->errstr */                  stub->errstr = errstr; diff --git a/libglusterfs/src/statedump.c b/libglusterfs/src/statedump.c index 52de73b50..c744c6c5f 100644 --- a/libglusterfs/src/statedump.c +++ b/libglusterfs/src/statedump.c @@ -88,13 +88,12 @@ gf_proc_dump_close (void)  } -void +int  gf_proc_dump_add_section (char *key, ...)  {          char buf[GF_DUMP_MAX_BUF_LEN];          va_list ap; -        int     ret;          GF_ASSERT(key); @@ -106,18 +105,17 @@ gf_proc_dump_add_section (char *key, ...)          va_end (ap);          snprintf (buf + strlen(buf),                    GF_DUMP_MAX_BUF_LEN - strlen (buf),  "]\n"); -        ret = write (gf_dump_fd, buf, strlen (buf)); +        return write (gf_dump_fd, buf, strlen (buf));  } -void +int  gf_proc_dump_write (char *key, char *value,...)  {          char         buf[GF_DUMP_MAX_BUF_LEN];          int          offset = 0;          va_list      ap; -        int          ret;          GF_ASSERT (key); @@ -133,7 +131,7 @@ gf_proc_dump_write (char *key, char *value,...)          offset = strlen (buf);          snprintf (buf + offset, GF_DUMP_MAX_BUF_LEN - offset, "\n"); -        ret = write (gf_dump_fd, buf, strlen (buf)); +        return write (gf_dump_fd, buf, strlen (buf));  }  static void @@ -421,7 +419,12 @@ gf_proc_dump_parse_set_option (char *key, char *value)                            "matched key : %s\n", key);                  ret = write (gf_dump_fd, buf, strlen (buf)); -                return -1; +                /* warning suppression */ +                if (ret >= 0) { +                        ret = -1; +                        goto out; +                } +          }          opt_value = (strncasecmp (value, "yes", 3) ? @@ -429,7 +432,9 @@ gf_proc_dump_parse_set_option (char *key, char *value)          GF_PROC_DUMP_SET_OPTION (*opt_key, opt_value); -        return 0; +        ret = 0; +out: +        return ret;  }  static int diff --git a/libglusterfs/src/statedump.h b/libglusterfs/src/statedump.h index fb07f5927..1c56d6cfa 100644 --- a/libglusterfs/src/statedump.h +++ b/libglusterfs/src/statedump.h @@ -71,9 +71,9 @@ void gf_proc_dump_cleanup(void);  void gf_proc_dump_info(int signum); -void gf_proc_dump_add_section(char *key,...); +int gf_proc_dump_add_section(char *key,...); -void gf_proc_dump_write(char *key, char *value,...); +int gf_proc_dump_write(char *key, char *value,...);  void inode_table_dump(inode_table_t *itable, char *prefix);  | 
