diff --git a/src/interfaces/ecpg/ecpglib/connect.c b/src/interfaces/ecpg/ecpglib/connect.c
index 1cb52116f9..a98fd88365 100644
--- a/src/interfaces/ecpg/ecpglib/connect.c
+++ b/src/interfaces/ecpg/ecpglib/connect.c
@@ -254,13 +254,14 @@ ECPGnoticeReceiver(void *arg, const PGresult *result)
 	else
 		sqlcode = 0;
 
-	strncpy(sqlca->sqlstate, sqlstate, sizeof(sqlca->sqlstate));
+	sqlca->sqlstate[sizeof(sqlca->sqlstate) - 1] = '\0';
+	strncpy(sqlca->sqlstate, sqlstate, sizeof(sqlca->sqlstate) - 1);
 	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.sqlerrmc[sizeof(sqlca->sqlerrm.sqlerrmc) - 1] = '\0';
+	strncpy(sqlca->sqlerrm.sqlerrmc, message, sizeof(sqlca->sqlerrm.sqlerrmc) - 1);
 	sqlca->sqlerrm.sqlerrml = strlen(sqlca->sqlerrm.sqlerrmc);
 
 	ecpg_log("raising sqlcode %d\n", sqlcode);
diff --git a/src/interfaces/ecpg/ecpglib/error.c b/src/interfaces/ecpg/ecpglib/error.c
index a4e3c0d01f..3c5ac6addb 100644
--- a/src/interfaces/ecpg/ecpglib/error.c
+++ b/src/interfaces/ecpg/ecpglib/error.c
@@ -22,7 +22,8 @@ ecpg_raise(int line, int code, const char *sqlstate, const char *str)
 	}
 
 	sqlca->sqlcode = code;
-	strncpy(sqlca->sqlstate, sqlstate, sizeof(sqlca->sqlstate));
+	sqlca->sqlstate[sizeof(sqlca->sqlstate) - 1] = '\0';
+	strncpy(sqlca->sqlstate, sqlstate, sizeof(sqlca->sqlstate) - 1);
 
 	switch (code)
 	{
@@ -260,7 +261,8 @@ ecpg_raise_backend(int line, PGresult *result, PGconn *conn, int compat)
 	sqlca->sqlerrm.sqlerrml = strlen(sqlca->sqlerrm.sqlerrmc);
 
 	/* copy SQLSTATE */
-	strncpy(sqlca->sqlstate, sqlstate, sizeof(sqlca->sqlstate));
+    sqlca->sqlstate[sizeof(sqlca->sqlstate) - 1] = '\0';
+	strncpy(sqlca->sqlstate, sqlstate, sizeof(sqlca->sqlstate) - 1);
 
 	/* assign SQLCODE for backward compatibility */
 	if (strncmp(sqlca->sqlstate, "23505", sizeof(sqlca->sqlstate)) == 0)
