]> git.sur5r.net Git - i3/i3/commitdiff
Use safe wrappers wherever possible
authorshdown <shdownnine@gmail.com>
Mon, 3 Aug 2015 09:50:50 +0000 (12:50 +0300)
committershdown <shdownnine@gmail.com>
Mon, 3 Aug 2015 09:50:50 +0000 (12:50 +0300)
14 files changed:
i3-config-wizard/main.c
i3-input/main.c
i3-msg/main.c
i3-nagbar/main.c
i3bar/src/child.c
i3bar/src/xcb.c
libi3/get_exe_path.c
libi3/root_atom_contents.c
src/bindings.c
src/config_parser.c
src/ipc.c
src/startup.c
src/util.c
src/window.c

index 813be66140f70955c3fb041b9a987de580699fe2..bd9aa28a4146d2404bbf3d174361b524c11c97ae 100644 (file)
@@ -768,7 +768,7 @@ int main(int argc, char *argv[]) {
         switch (o) {
             case 's':
                 FREE(socket_path);
-                socket_path = strdup(optarg);
+                socket_path = sstrdup(optarg);
                 break;
             case 'v':
                 printf("i3-config-wizard " I3_VERSION "\n");
index 6736aad3a97052e3d671029275b9510c28935860..cf3884e9b40e9874b697789bbd52d4568b99abd5 100644 (file)
@@ -103,7 +103,7 @@ static void restore_input_focus(void) {
  *
  */
 static uint8_t *concat_strings(char **glyphs, int max) {
-    uint8_t *output = calloc(max + 1, 4);
+    uint8_t *output = scalloc(max + 1, 4);
     uint8_t *walk = output;
     for (int c = 0; c < max; c++) {
         printf("at %c\n", glyphs[c][0]);
@@ -187,10 +187,10 @@ static void finish_input() {
 
     /* allocate space for the output */
     int inputlen = strlen(command);
-    char *full = calloc(1,
-                        strlen(format) - (2 * cnt) /* format without all %s */
-                            + (inputlen * cnt)     /* replaced %s */
-                            + 1);                  /* trailing NUL */
+    char *full = scalloc(strlen(format) - (2 * cnt) /* format without all %s */
+                             + (inputlen * cnt)     /* replaced %s */
+                             + 1,                   /* trailing NUL */
+                         1);
     char *dest = full;
     for (c = 0; c < len; c++) {
         /* if this is not % or it is % but without a following 's',
@@ -359,7 +359,7 @@ free_resources:
 }
 
 int main(int argc, char *argv[]) {
-    format = strdup("%s");
+    format = sstrdup("%s");
     socket_path = getenv("I3SOCK");
     char *pattern = sstrdup("pango:monospace 8");
     int o, option_index = 0;
@@ -381,7 +381,7 @@ int main(int argc, char *argv[]) {
         switch (o) {
             case 's':
                 FREE(socket_path);
-                socket_path = strdup(optarg);
+                socket_path = sstrdup(optarg);
                 break;
             case 'v':
                 printf("i3-input " I3_VERSION);
@@ -401,11 +401,11 @@ int main(int argc, char *argv[]) {
                 break;
             case 'f':
                 FREE(pattern);
-                pattern = strdup(optarg);
+                pattern = sstrdup(optarg);
                 break;
             case 'F':
                 FREE(format);
-                format = strdup(optarg);
+                format = sstrdup(optarg);
                 break;
             case 'h':
                 printf("i3-input " I3_VERSION "\n");
index 3f195d410b2dfb779dd393111eb035616cd7ce84..47e7ae91e681e583f039d31b4e1ce83654fe44c4 100644 (file)
@@ -187,8 +187,7 @@ int main(int argc, char *argv[]) {
             payload = sstrdup(argv[optind]);
         } else {
             char *both;
-            if (asprintf(&both, "%s %s", payload, argv[optind]) == -1)
-                err(EXIT_FAILURE, "asprintf");
+            sasprintf(&both, "%s %s", payload, argv[optind]);
             free(payload);
             payload = both;
         }
index aca70ab115efd4c2021a81b37dff41068f3db26b..d86cd69a3f984f15f80012117b868d168f06ef3b 100644 (file)
@@ -371,7 +371,7 @@ int main(int argc, char *argv[]) {
     if (argv0_len > strlen(".nagbar_cmd") &&
         strcmp(argv[0] + argv0_len - strlen(".nagbar_cmd"), ".nagbar_cmd") == 0) {
         unlink(argv[0]);
-        cmd = strdup(argv[0]);
+        cmd = sstrdup(argv[0]);
         *(cmd + argv0_len - strlen(".nagbar_cmd")) = '\0';
         execl("/bin/sh", "/bin/sh", cmd, NULL);
         err(EXIT_FAILURE, "execv(/bin/sh, /bin/sh, %s)", cmd);
@@ -418,7 +418,7 @@ int main(int argc, char *argv[]) {
                 printf("i3-nagbar [-m <message>] [-b <button> <action>] [-t warning|error] [-f <font>] [-v]\n");
                 return 0;
             case 'b':
-                buttons = realloc(buttons, sizeof(button_t) * (buttoncnt + 1));
+                buttons = srealloc(buttons, sizeof(button_t) * (buttoncnt + 1));
                 buttons[buttoncnt].label = i3string_from_utf8(optarg);
                 buttons[buttoncnt].action = argv[optind];
                 printf("button with label *%s* and action *%s*\n",
index 78354685051625bd3b79042d316a8fb545e0fab2..cfc96d5f1ad2d4841f39ceb39480e235fb93cb26 100644 (file)
@@ -220,21 +220,21 @@ static int stdin_string(void *context, const unsigned char *val, size_t len) {
         return 1;
     }
     if (strcasecmp(ctx->last_map_key, "min_width") == 0) {
-        char *copy = (char *)malloc(len + 1);
+        char *copy = (char *)smalloc(len + 1);
         strncpy(copy, (const char *)val, len);
         copy[len] = 0;
         ctx->block.min_width_str = copy;
         return 1;
     }
     if (strcasecmp(ctx->last_map_key, "name") == 0) {
-        char *copy = (char *)malloc(len + 1);
+        char *copy = (char *)smalloc(len + 1);
         strncpy(copy, (const char *)val, len);
         copy[len] = 0;
         ctx->block.name = copy;
         return 1;
     }
     if (strcasecmp(ctx->last_map_key, "instance") == 0) {
-        char *copy = (char *)malloc(len + 1);
+        char *copy = (char *)smalloc(len + 1);
         strncpy(copy, (const char *)val, len);
         copy[len] = 0;
         ctx->block.instance = copy;
index cbb289032ce37438f26561db4575413d5b7ce960..f90bbceede5e51356204f85d1e9ceb38874606a7 100644 (file)
@@ -1654,8 +1654,7 @@ void reconfig_windows(bool redraw_bars) {
                                                "i3bar\0i3bar\0");
 
             char *name;
-            if (asprintf(&name, "i3bar for output %s", walk->name) == -1)
-                err(EXIT_FAILURE, "asprintf()");
+            sasprintf(&name, "i3bar for output %s", walk->name);
             xcb_void_cookie_t name_cookie;
             name_cookie = xcb_change_property(xcb_connection,
                                               XCB_PROP_MODE_REPLACE,
index fc9b3014d0f1a98c6d57349f744287efa8c474e3..ef8f23bc25a1915385647f96656a9d4586cb6494 100644 (file)
@@ -73,7 +73,7 @@ char *get_exe_path(const char *argv0) {
         }
         sasprintf(&path, ":%s", tmp);
     } else {
-        path = strdup(path);
+        path = sstrdup(path);
     }
     const char *component;
     char *str = path;
index df54ef093c5cd2c34ce417ee0ed7cfbb6f577d4d..d91f1e15b4ba10f21cc122c3798746354bae9476 100644 (file)
@@ -80,18 +80,10 @@ char *root_atom_contents(const char *atomname, xcb_connection_t *provided_conn,
     if (prop_reply->type == XCB_ATOM_CARDINAL) {
         /* We treat a CARDINAL as a >= 32-bit unsigned int. The only CARDINAL
          * we query is I3_PID, which is 32-bit. */
-        if (asprintf(&content, "%u", *((unsigned int *)xcb_get_property_value(prop_reply))) == -1) {
-            free(atom_reply);
-            free(prop_reply);
-            return NULL;
-        }
+        sasprintf(&content, "%u", *((unsigned int *)xcb_get_property_value(prop_reply)));
     } else {
-        if (asprintf(&content, "%.*s", xcb_get_property_value_length(prop_reply),
-                     (char *)xcb_get_property_value(prop_reply)) == -1) {
-            free(atom_reply);
-            free(prop_reply);
-            return NULL;
-        }
+        sasprintf(&content, "%.*s", xcb_get_property_value_length(prop_reply),
+                  (char *)xcb_get_property_value(prop_reply));
     }
     if (provided_conn == NULL)
         xcb_disconnect(conn);
index 1623e98e17e14ba2de1cc3a5f4da6dab86613b08..8e8e9febe8bee0f97926ec690090f4cc6f3e2b36 100644 (file)
@@ -393,9 +393,9 @@ static Binding *binding_copy(Binding *bind) {
     Binding *ret = smalloc(sizeof(Binding));
     *ret = *bind;
     if (bind->symbol != NULL)
-        ret->symbol = strdup(bind->symbol);
+        ret->symbol = sstrdup(bind->symbol);
     if (bind->command != NULL)
-        ret->command = strdup(bind->command);
+        ret->command = sstrdup(bind->command);
     if (bind->translated_to != NULL) {
         ret->translated_to = smalloc(sizeof(xcb_keycode_t) * bind->number_keycodes);
         memcpy(ret->translated_to, bind->translated_to, sizeof(xcb_keycode_t) * bind->number_keycodes);
index d88919552cd0ea3d223dc8b450459e0d0e345abd..4e16f0605f9b4cccdb943fa1376f8669bcc069e3 100644 (file)
@@ -789,12 +789,12 @@ static char *migrate_config(char *input, off_t size) {
 
     /* read the script’s output */
     int conv_size = 65535;
-    char *converted = malloc(conv_size);
+    char *converted = smalloc(conv_size);
     int read_bytes = 0, ret;
     do {
         if (read_bytes == conv_size) {
             conv_size += 65535;
-            converted = realloc(converted, conv_size);
+            converted = srealloc(converted, conv_size);
         }
         ret = read(readpipe[0], converted + read_bytes, conv_size - read_bytes);
         if (ret == -1) {
index 5fd43c087b02a23be063e514a482d00879bce787..a4bc227896f4b5de41c1e33c27235de7118c041d 100644 (file)
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -900,7 +900,7 @@ static int add_subscription(void *extra, const unsigned char *s,
     int event = client->num_events;
 
     client->num_events++;
-    client->events = realloc(client->events, client->num_events * sizeof(char *));
+    client->events = srealloc(client->events, client->num_events * sizeof(char *));
     /* We copy the string because it is not null-terminated and strndup()
      * is missing on some BSD systems */
     client->events[event] = scalloc(len + 1, 1);
index 1cfec5f7dd941ba08d3d0bd9470d65115a226469..400d319239ec6149df3c4d8046cd544c22faf9de 100644 (file)
@@ -316,14 +316,8 @@ struct Startup_Sequence *startup_sequence_get(i3Window *cwindow,
     }
 
     char *startup_id;
-    if (asprintf(&startup_id, "%.*s", xcb_get_property_value_length(startup_id_reply),
-                 (char *)xcb_get_property_value(startup_id_reply)) == -1) {
-        perror("asprintf()");
-        DLOG("Could not get _NET_STARTUP_ID\n");
-        free(startup_id_reply);
-        return NULL;
-    }
-
+    sasprintf(&startup_id, "%.*s", xcb_get_property_value_length(startup_id_reply),
+              (char *)xcb_get_property_value(startup_id_reply));
     struct Startup_Sequence *current, *sequence = NULL;
     TAILQ_FOREACH(current, &startup_sequences, sequences) {
         if (strcmp(current->id, startup_id) != 0)
index 7c631b0d003d61516f1390a11710a9011dc56687..5a95e67cd401c6a0207e850734323c6e5b63387a 100644 (file)
@@ -122,7 +122,7 @@ void exec_i3_utility(char *name, char *argv[]) {
     /* if the script is not in path, maybe the user installed to a strange
      * location and runs the i3 binary with an absolute path. We use
      * argv[0]’s dirname */
-    char *pathbuf = strdup(start_argv[0]);
+    char *pathbuf = sstrdup(start_argv[0]);
     char *dir = dirname(pathbuf);
     sasprintf(&migratepath, "%s/%s", dir, name);
     argv[0] = migratepath;
index dd04b1b9e822c851e56948775ef6e45364773de9..764cfca5a98267a2f6ae8467aebd9a6d025b66d3 100644 (file)
@@ -208,13 +208,8 @@ void window_update_role(i3Window *win, xcb_get_property_reply_t *prop, bool befo
     }
 
     char *new_role;
-    if (asprintf(&new_role, "%.*s", xcb_get_property_value_length(prop),
-                 (char *)xcb_get_property_value(prop)) == -1) {
-        perror("asprintf()");
-        DLOG("Could not get WM_WINDOW_ROLE\n");
-        free(prop);
-        return;
-    }
+    sasprintf(&new_role, "%.*s", xcb_get_property_value_length(prop),
+              (char *)xcb_get_property_value(prop));
     FREE(win->role);
     win->role = new_role;
     LOG("WM_WINDOW_ROLE changed to \"%s\"\n", win->role);