0ea4805
diff --git a/configure b/configure
0ea4805
--- a/configure
0ea4805
+++ b/configure
0ea4805
@@ -4297,6 +4297,38 @@ else
0ea4805
 				{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** missing CFLAGS support: -Wextra" >&5
0ea4805
 $as_echo "$as_me: WARNING: *** missing CFLAGS support: -Wextra" >&2;}
0ea4805
 
0ea4805
+fi
0ea4805
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
0ea4805
+		CFLAGS="$CFLAGS_SAVE"
0ea4805
+
0ea4805
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: *** check for CFLAGS: -Werror=format-truncation" >&5
0ea4805
+$as_echo "*** check for CFLAGS: -Werror=format-truncation" >&6; }
0ea4805
+		CFLAGS_SAVE="$CFLAGS"
0ea4805
+		CFLAGS="$CFLAGS -Werror=format-truncation"
0ea4805
+		cat confdefs.h - <<_ACEOF >conftest.$ac_ext
0ea4805
+/* end confdefs.h.  */
0ea4805
+int a=1;
0ea4805
+int
0ea4805
+main ()
0ea4805
+{
0ea4805
+
0ea4805
+  ;
0ea4805
+  return 0;
0ea4805
+}
0ea4805
+
0ea4805
+_ACEOF
0ea4805
+if ac_fn_c_try_compile "$LINENO"; then :
0ea4805
+
0ea4805
+				{ $as_echo "$as_me:${as_lineno-$LINENO}: result: *** CFLAGS supported: -Werror=format-truncation" >&5
0ea4805
+$as_echo "*** CFLAGS supported: -Werror=format-truncation" >&6; }
0ea4805
+				# disable errors related to format-truncation
0ea4805
+				CFLAGS_EXTRA="$CFLAGS_EXTRA -Werror=format-truncation=0"
0ea4805
+
0ea4805
+else
0ea4805
+
0ea4805
+				{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** missing CFLAGS support: -Werror=format-truncation" >&5
0ea4805
+$as_echo "$as_me: WARNING: *** missing CFLAGS support: -Werror=format-truncation" >&2;}
0ea4805
+
0ea4805
 fi
0ea4805
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
0ea4805
 		CFLAGS="$CFLAGS_SAVE"
0ea4805
diff --git a/configure.in b/configure.in
0ea4805
--- a/configure.in
0ea4805
+++ b/configure.in
0ea4805
@@ -135,6 +135,22 @@ AC_ARG_ENABLE([compiler-warning-to-error],
0ea4805
 				AC_MSG_WARN([*** missing CFLAGS support: -Wextra])
0ea4805
 			])
0ea4805
 		CFLAGS="$CFLAGS_SAVE"
0ea4805
+
0ea4805
+		AC_MSG_RESULT([*** check for CFLAGS: -Werror=format-truncation])
0ea4805
+		CFLAGS_SAVE="$CFLAGS"
0ea4805
+		CFLAGS="$CFLAGS -Werror=format-truncation"
0ea4805
+		AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
0ea4805
+			     [[int a=1;]])
0ea4805
+			],
0ea4805
+			[
0ea4805
+				AC_MSG_RESULT([*** CFLAGS supported: -Werror=format-truncation])
0ea4805
+				# disable errors related to format-truncation
0ea4805
+				CFLAGS_EXTRA="$CFLAGS_EXTRA -Werror=format-truncation=0"
0ea4805
+			],
0ea4805
+			[
0ea4805
+				AC_MSG_WARN([*** missing CFLAGS support: -Werror=format-truncation])
0ea4805
+			])
0ea4805
+		CFLAGS="$CFLAGS_SAVE"
0ea4805
 	])
0ea4805
 
0ea4805
 dnl *************************************************
0ea4805
diff --git a/databases/lib/libipv6calc_db_wrapper_DBIP.c b/databases/lib/libipv6calc_db_wrapper_DBIP.c
0ea4805
--- a/databases/lib/libipv6calc_db_wrapper_DBIP.c
0ea4805
+++ b/databases/lib/libipv6calc_db_wrapper_DBIP.c
0ea4805
@@ -786,8 +786,7 @@ char *libipv6calc_db_wrapper_DBIP_database_info(const unsigned int type) {
0ea4805
 	};
0ea4805
 
0ea4805
 	char year[5];
0ea4805
-	strncpy(year, datastring, 4);
0ea4805
-	year[4] = '\0';
0ea4805
+	snprintf(year, sizeof(year), "%s", datastring);
0ea4805
 	snprintf(resultstring, sizeof(resultstring), "DBIP-%d/%s %s Copyright (c) %s db-ip.com All Rights Reserved"
0ea4805
 		, type
0ea4805
 		, datastring
0ea4805
diff --git a/ipv6calc/ipv6calc.c b/ipv6calc/ipv6calc.c
0ea4805
index 2eb8ebc..9c961c2 100644
0ea4805
--- a/ipv6calc/ipv6calc.c
0ea4805
+++ b/ipv6calc/ipv6calc.c
0ea4805
@@ -1941,7 +1941,7 @@ PIPE_input:
0ea4805
 
0ea4805
 			if ((formatoptions & FORMATOPTION_print_iid_var) == FORMATOPTION_print_iid_var) {
0ea4805
 				iid_random_result = ipv6addr_iidrandomdetection(&ipv6addr, &iid_statistics);
0ea4805
-				sprintf(resultstring2, "%-40s R=%d h=%7.3f r=%7.3f db= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d dbh= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d da= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d dd= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d dda= %d", resultstring, \
0ea4805
+				snprintf(resultstring2, sizeof(resultstring2), "%-40s R=%d h=%7.3f r=%7.3f db= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d dbh= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d da= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d dd= %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d dda= %d", resultstring, \
0ea4805
 					iid_random_result, iid_statistics.hexdigit, iid_statistics.lls_residual, \
0ea4805
 					iid_statistics.digit_blocks[0], iid_statistics.digit_blocks[1], iid_statistics.digit_blocks[2], iid_statistics.digit_blocks[3], iid_statistics.digit_blocks[4], iid_statistics.digit_blocks[5], iid_statistics.digit_blocks[6], iid_statistics.digit_blocks[7], iid_statistics.digit_blocks[8], iid_statistics.digit_blocks[9], iid_statistics.digit_blocks[10], iid_statistics.digit_blocks[11], iid_statistics.digit_blocks[12], iid_statistics.digit_blocks[13], iid_statistics.digit_blocks[14], iid_statistics.digit_blocks[15], \
0ea4805
 					iid_statistics.digit_blocks_hexdigit[0], iid_statistics.digit_blocks_hexdigit[1], iid_statistics.digit_blocks_hexdigit[2], iid_statistics.digit_blocks_hexdigit[3], iid_statistics.digit_blocks_hexdigit[4], iid_statistics.digit_blocks_hexdigit[5], iid_statistics.digit_blocks_hexdigit[6], iid_statistics.digit_blocks_hexdigit[7], iid_statistics.digit_blocks_hexdigit[8], iid_statistics.digit_blocks_hexdigit[9], iid_statistics.digit_blocks_hexdigit[10], iid_statistics.digit_blocks_hexdigit[11], iid_statistics.digit_blocks_hexdigit[12], iid_statistics.digit_blocks_hexdigit[13], iid_statistics.digit_blocks_hexdigit[14], iid_statistics.digit_blocks_hexdigit[15], \
0ea4805
@@ -1950,7 +1950,7 @@ PIPE_input:
0ea4805
 					iid_statistics.digit_delta[16], iid_statistics.digit_delta[17], iid_statistics.digit_delta[18], iid_statistics.digit_delta[19], iid_statistics.digit_delta[20], iid_statistics.digit_delta[21], iid_statistics.digit_delta[22], iid_statistics.digit_delta[23], iid_statistics.digit_delta[24], iid_statistics.digit_delta[25], iid_statistics.digit_delta[26], iid_statistics.digit_delta[27], iid_statistics.digit_delta[28], iid_statistics.digit_delta[29], iid_statistics.digit_delta[30], \
0ea4805
 					iid_statistics.digit_delta_amount
0ea4805
 				);
0ea4805
-				sprintf(resultstring, "%s", resultstring2);
0ea4805
+				snprintf(resultstring, sizeof(resultstring), "%s", resultstring2);
0ea4805
 			};
0ea4805
 			break;
0ea4805