diff options
author | Drew DeVault <sir@cmpwn.com> | 2016-12-15 18:17:36 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2016-12-15 19:01:41 -0500 |
commit | a2b914965686bb4352b8ebc4a46d898f5a793647 (patch) | |
tree | b1dd50cfcb5b05b6119452ef2911a1221edf8f62 | |
parent | Handle allocation failures in security code (diff) | |
download | sway-a2b914965686bb4352b8ebc4a46d898f5a793647.tar.gz sway-a2b914965686bb4352b8ebc4a46d898f5a793647.tar.zst sway-a2b914965686bb4352b8ebc4a46d898f5a793647.zip |
Add remaining sway allocation failure handling
-rw-r--r-- | sway/container.c | 2 | ||||
-rw-r--r-- | sway/workspace.c | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/sway/container.c b/sway/container.c index e5284200..8a584efa 100644 --- a/sway/container.c +++ b/sway/container.c | |||
@@ -217,7 +217,7 @@ swayc_t *new_workspace(swayc_t *output, const char *name) { | |||
217 | workspace->y = output->y; | 217 | workspace->y = output->y; |
218 | workspace->width = output->width; | 218 | workspace->width = output->width; |
219 | workspace->height = output->height; | 219 | workspace->height = output->height; |
220 | workspace->name = strdup(name); | 220 | workspace->name = !name ? NULL : strdup(name); |
221 | workspace->visible = false; | 221 | workspace->visible = false; |
222 | workspace->floating = create_list(); | 222 | workspace->floating = create_list(); |
223 | 223 | ||
diff --git a/sway/workspace.c b/sway/workspace.c index 7b24d7d9..d804126b 100644 --- a/sway/workspace.c +++ b/sway/workspace.c | |||
@@ -121,6 +121,10 @@ char *workspace_next_name(const char *output_name) { | |||
121 | l = 3; | 121 | l = 3; |
122 | } | 122 | } |
123 | char *name = malloc(l + 1); | 123 | char *name = malloc(l + 1); |
124 | if (!name) { | ||
125 | sway_log(L_ERROR, "Could not allocate workspace name"); | ||
126 | return NULL; | ||
127 | } | ||
124 | sprintf(name, "%d", ws_num++); | 128 | sprintf(name, "%d", ws_num++); |
125 | return name; | 129 | return name; |
126 | } | 130 | } |
@@ -278,7 +282,11 @@ bool workspace_switch(swayc_t *workspace) { | |||
278 | || (strcmp(prev_workspace_name, active_ws->name) | 282 | || (strcmp(prev_workspace_name, active_ws->name) |
279 | && active_ws != workspace)) { | 283 | && active_ws != workspace)) { |
280 | free(prev_workspace_name); | 284 | free(prev_workspace_name); |
281 | prev_workspace_name = malloc(strlen(active_ws->name)+1); | 285 | prev_workspace_name = malloc(strlen(active_ws->name) + 1); |
286 | if (!prev_workspace_name) { | ||
287 | sway_log(L_ERROR, "Unable to allocate previous workspace name"); | ||
288 | return false; | ||
289 | } | ||
282 | strcpy(prev_workspace_name, active_ws->name); | 290 | strcpy(prev_workspace_name, active_ws->name); |
283 | } | 291 | } |
284 | 292 | ||