diff options
author | Drew DeVault <sir@cmpwn.com> | 2016-12-15 17:39:09 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2016-12-15 19:01:40 -0500 |
commit | 248df18c24d2a849de984b477ca3913ce7c72441 (patch) | |
tree | 35beb85ecfcc54574d3b5e82c8445eb8c1219689 /sway/commands/output.c | |
parent | Handle border-related malloc failures (diff) | |
download | sway-248df18c24d2a849de984b477ca3913ce7c72441.tar.gz sway-248df18c24d2a849de984b477ca3913ce7c72441.tar.zst sway-248df18c24d2a849de984b477ca3913ce7c72441.zip |
Handle allocation failure in commands
Diffstat (limited to 'sway/commands/output.c')
-rw-r--r-- | sway/commands/output.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/sway/commands/output.c b/sway/commands/output.c index 6c1c55b5..e150aed2 100644 --- a/sway/commands/output.c +++ b/sway/commands/output.c | |||
@@ -113,12 +113,20 @@ struct cmd_results *cmd_output(int argc, char **argv) { | |||
113 | src = p.we_wordv[0]; | 113 | src = p.we_wordv[0]; |
114 | if (config->reading && *src != '/') { | 114 | if (config->reading && *src != '/') { |
115 | char *conf = strdup(config->current_config); | 115 | char *conf = strdup(config->current_config); |
116 | char *conf_path = dirname(conf); | 116 | if (conf) { |
117 | src = malloc(strlen(conf_path) + strlen(src) + 2); | 117 | char *conf_path = dirname(conf); |
118 | sprintf(src, "%s/%s", conf_path, p.we_wordv[0]); | 118 | src = malloc(strlen(conf_path) + strlen(src) + 2); |
119 | free(conf); | 119 | if (src) { |
120 | sprintf(src, "%s/%s", conf_path, p.we_wordv[0]); | ||
121 | } else { | ||
122 | sway_log(L_ERROR, "Unable to allocate background source"); | ||
123 | } | ||
124 | free(conf); | ||
125 | } else { | ||
126 | sway_log(L_ERROR, "Unable to allocate background source"); | ||
127 | } | ||
120 | } | 128 | } |
121 | if (access(src, F_OK) == -1) { | 129 | if (!src || access(src, F_OK) == -1) { |
122 | return cmd_results_new(CMD_INVALID, "output", "Background file unreadable (%s)", src); | 130 | return cmd_results_new(CMD_INVALID, "output", "Background file unreadable (%s)", src); |
123 | } | 131 | } |
124 | for (char *m = mode; *m; ++m) *m = tolower(*m); | 132 | for (char *m = mode; *m; ++m) *m = tolower(*m); |