]> git.cameronkatri.com Git - cgit.git/commitdiff
ui-shared: ban strcat()
authorChristian Hesse <mail@eworm.de>
Tue, 28 Aug 2018 18:33:02 +0000 (20:33 +0200)
committerChristian Hesse <mail@eworm.de>
Tue, 11 Sep 2018 06:47:12 +0000 (08:47 +0200)
Git upstream bans strcat() with commit:

  banned.h: mark strcat() as banned
  1b11b64b815db62f93a04242e4aed5687a448748

To avoid compiler warnings from gcc 8.1.x we get the hard way.

Signed-off-by: Christian Hesse <mail@eworm.de>
ui-shared.c

index 739505a865cc7660621f28666474ec9c6d624718..b53c56dd126fd76c15a51a588355343282f9695e 100644 (file)
@@ -1159,7 +1159,7 @@ void cgit_print_snapshot_links(const struct cgit_repo *repo, const char *ref,
 
 void cgit_set_title_from_path(const char *path)
 {
-       size_t path_len, path_index, path_last_end;
+       size_t path_len, path_index, path_last_end, line_len;
        char *new_title;
 
        if (!path)
@@ -1176,14 +1176,18 @@ void cgit_set_title_from_path(const char *path)
                                continue;
                        }
                        strncat(new_title, &path[path_index + 1], path_last_end - path_index - 1);
-                       strcat(new_title, "\\");
+                       line_len = strlen(new_title);
+                       new_title[line_len++] = '\\';
+                       new_title[line_len] = '\0';
                        path_last_end = path_index;
                }
        }
        if (path_last_end)
                strncat(new_title, path, path_last_end);
 
-       strcat(new_title, " - ");
-       strcat(new_title, ctx.page.title);
+       line_len = strlen(new_title);
+       memcpy(&new_title[line_len], " - ", 3);
+       new_title[line_len + 3] = '\0';
+       strncat(new_title, ctx.page.title, sizeof(new_title) - strlen(new_title) - 1);
        ctx.page.title = new_title;
 }