From 1c5023002bad3a5b0bbc181fdb324160beace733 Mon Sep 17 00:00:00 2001
From: Joshua Watt <JPEWhacker@gmail.com>
Date: Tue, 19 Nov 2019 12:47:30 -0600
Subject: [PATCH] stdlib: Add strlcat

Adds strlcat which can be used to safely concatenate strings

Upstream-Status: Submitted [https://bugzilla.nasm.us/show_bug.cgi?id=3392635]
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>

---
 Makefile.in        |  2 +-
 configure.ac       |  2 ++
 include/compiler.h |  4 ++++
 stdlib/strlcat.c   | 43 +++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 50 insertions(+), 1 deletion(-)
 create mode 100644 stdlib/strlcat.c

diff --git a/Makefile.in b/Makefile.in
index bfae1f8..156dc4c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -101,7 +101,7 @@ NASM =	asm/nasm.$(O)
 NDISASM = disasm/ndisasm.$(O)
 
 LIBOBJ = stdlib/snprintf.$(O) stdlib/vsnprintf.$(O) stdlib/strlcpy.$(O) \
-	stdlib/strnlen.$(O) stdlib/strrchrnul.$(O) \
+	stdlib/strnlen.$(O) stdlib/strrchrnul.$(O) stdlib/strlcat.$(O) \
 	\
 	nasmlib/ver.$(O) \
 	nasmlib/alloc.$(O) nasmlib/asprintf.$(O) nasmlib/errfile.$(O) \
diff --git a/configure.ac b/configure.ac
index 7b72769..14fd033 100644
--- a/configure.ac
+++ b/configure.ac
@@ -234,6 +234,7 @@ PA_FUNC_SNPRINTF
 PA_FUNC_VSNPRINTF
 AC_CHECK_FUNCS([strlcpy])
 AC_CHECK_FUNCS([strrchrnul])
+AC_CHECK_FUNCS([strlcat])
 
 dnl These types are POSIX-specific, and Windows does it differently...
 AC_CHECK_TYPES([struct _stati64])
@@ -253,6 +254,7 @@ AC_CHECK_DECLS(strsep)
 AC_CHECK_DECLS(strlcpy)
 AC_CHECK_DECLS(strnlen)
 AC_CHECK_DECLS(strrchrnul)
+AC_CHECK_DECLS(strlcat)
 
 dnl Check for missing types
 AC_TYPE_UINTPTR_T
diff --git a/include/compiler.h b/include/compiler.h
index b4fd3a8..7fb4821 100644
--- a/include/compiler.h
+++ b/include/compiler.h
@@ -169,6 +169,10 @@ size_t strlcpy(char *, const char *, size_t);
 char *strrchrnul(const char *, int);
 #endif
 
+#if !defined(HAVE_STRLCAT) || !HAVE_DECL_STRLCAT
+size_t strlcat(char *, const char *, size_t);
+#endif
+
 #ifndef __cplusplus		/* C++ has false, true, bool as keywords */
 # ifdef HAVE_STDBOOL_H
 #  include <stdbool.h>
diff --git a/stdlib/strlcat.c b/stdlib/strlcat.c
new file mode 100644
index 0000000..7084d46
--- /dev/null
+++ b/stdlib/strlcat.c
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2019 Garmin Ltd. or its subsidiaries
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "compiler.h"
+
+/*
+ * Concatenate src string to dest of size size. The destination buffer will
+ * have no more than size-1 character when the operation finishes. Always NUL
+ * terminates, unless size == 0 or dest has no NUL terminator. Returns
+ * strlen(initial dest) + strlen(src); if retval >= size, truncation occurred.
+ */
+#ifndef HAVE_STRLCAT
+
+size_t strlcat(char *dest, const char *src, size_t size)
+{
+    size_t n;
+
+    /* find the NULL terminator in dest */
+    for (n = 0; i < size && dest[n] != '\0'; n++)
+        ;
+
+    /* destination was not NULL terminated. Return the initial size */
+    if (n == size)
+        return size;
+
+    return strlcpy(&dest[n], src, size - n) + n;
+}
+
+#endif
+
