summaryrefslogtreecommitdiffstats
path: root/libglusterfs
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfs')
-rw-r--r--libglusterfs/src/common-utils.c19
-rw-r--r--libglusterfs/src/daemon.c9
-rw-r--r--libglusterfs/src/mem-pool.c3
-rw-r--r--libglusterfs/src/options.c4
-rw-r--r--libglusterfs/src/statedump.c21
-rw-r--r--libglusterfs/src/statedump.h4
6 files changed, 49 insertions, 11 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c
index 2d4415f506d..e7d54d48b22 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 51b14810cc4..778196164b8 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 95e91567e16..4cad56dd906 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 1e6413cc0a9..b8d3b6ae5a8 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 52de73b50e3..c744c6c5ff8 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 fb07f5927a2..1c56d6cfa8a 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);