diff --git a/src/interfaces/ecpg/ecpglib/connect.c b/src/interfaces/ecpg/ecpglib/connect.c
index 60564b176c..a3c5c0ff4c 100644
--- a/src/interfaces/ecpg/ecpglib/connect.c
+++ b/src/interfaces/ecpg/ecpglib/connect.c
@@ -222,6 +222,7 @@ ECPGnoticeReceiver(void *arg, const PGresult *result)
 	char	   *message = PQresultErrorField(result, PG_DIAG_MESSAGE_PRIMARY);
 	struct sqlca_t *sqlca = ECPGget_sqlca();
 	int			sqlcode;
+	int         n;
 
 	if (sqlca == NULL)
 	{
@@ -254,14 +255,16 @@ ECPGnoticeReceiver(void *arg, const PGresult *result)
 	else
 		sqlcode = 0;
 
-	strncpy(sqlca->sqlstate, sqlstate, sizeof(sqlca->sqlstate));
+   n = snprintf(sqlca->sqlstate, sizeof(sqlca->sqlstate), "%s", sqlstate);
+   Assert(n >= 0 && n < sizeof(sqlca->sqlstate));
+	
 	sqlca->sqlcode = sqlcode;
 	sqlca->sqlwarn[2] = 'W';
 	sqlca->sqlwarn[0] = 'W';
 
-	strncpy(sqlca->sqlerrm.sqlerrmc, message, sizeof(sqlca->sqlerrm.sqlerrmc));
-	sqlca->sqlerrm.sqlerrmc[sizeof(sqlca->sqlerrm.sqlerrmc) - 1] = 0;
-	sqlca->sqlerrm.sqlerrml = strlen(sqlca->sqlerrm.sqlerrmc);
+   n = snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), "%s", message);
+   Assert(n >= 0 && n < sizeof(sqlca->sqlerrm.sqlerrmc));
+	sqlca->sqlerrm.sqlerrml = n;
 
 	ecpg_log("raising sqlcode %d\n", sqlcode);
 }