Index: uspace/lib/libc/generic/string.c
===================================================================
--- uspace/lib/libc/generic/string.c	(revision 732bb0c5e68395d4846d2c55a85a66056a5cb76e)
+++ uspace/lib/libc/generic/string.c	(revision 4482bc7dd7bb058b7f0db7a9caf5a892cca5a820)
@@ -530,4 +530,23 @@
 }
 
+/** Append one string to another.
+ *
+ * Append source string @a src to string in destination buffer @a dest.
+ * Size of the destination buffer is @a dest. If the size of the output buffer
+ * is at least one byte, the output string will always be well-formed, i.e.
+ * null-terminated and containing only complete characters.
+ *
+ * @param dst   Destination buffer.
+ * @param count Size of the destination buffer.
+ * @param src   Source string.
+ */
+void str_append(char *dest, size_t size, const char *src)
+{
+	size_t dstr_size;
+
+	dstr_size = str_size(dest);
+	str_cpy(dest + dstr_size, size - dstr_size, src);
+}
+
 /** Copy NULL-terminated wide string to string
  *
@@ -821,15 +840,4 @@
 }
 
-char *strcat(char *dest, const char *src)
-{
-	char *orig = dest;
-	while (*dest++)
-		;
-	--dest;
-	while ((*dest++ = *src++))
-		;
-	return orig;
-}
-
 char *str_dup(const char *src)
 {
Index: uspace/lib/libc/generic/vfs/vfs.c
===================================================================
--- uspace/lib/libc/generic/vfs/vfs.c	(revision 732bb0c5e68395d4846d2c55a85a66056a5cb76e)
+++ uspace/lib/libc/generic/vfs/vfs.c	(revision 4482bc7dd7bb058b7f0db7a9caf5a892cca5a820)
@@ -88,5 +88,5 @@
 		ncwd_path_nc[0] = '\0';
 	}
-	strcat(ncwd_path_nc, path);
+	str_append(ncwd_path_nc, cwd_size + 1 + size + 1, path);
 	ncwd_path = canonify(ncwd_path_nc, retlen);
 	if (!ncwd_path) {
Index: uspace/lib/libc/include/string.h
===================================================================
--- uspace/lib/libc/include/string.h	(revision 732bb0c5e68395d4846d2c55a85a66056a5cb76e)
+++ uspace/lib/libc/include/string.h	(revision 4482bc7dd7bb058b7f0db7a9caf5a892cca5a820)
@@ -72,4 +72,5 @@
 extern void str_cpy(char *dest, size_t size, const char *src);
 extern void str_ncpy(char *dest, size_t size, const char *src, size_t n);
+extern void str_append(char *dest, size_t size, const char *src);
 
 extern void wstr_nstr(char *dst, const wchar_t *src, size_t size);
@@ -89,6 +90,4 @@
 extern int stricmp(const char *, const char *);
 
-extern char *strcat(char *, const char *);
-
 extern long int strtol(const char *, char **, int);
 extern unsigned long strtoul(const char *, char **, int);
