diff --git a/src/interfaces/ecpg/ecpglib/descriptor.c b/src/interfaces/ecpg/ecpglib/descriptor.c index 15fd7a08a5..8996561078 100644 --- a/src/interfaces/ecpg/ecpglib/descriptor.c +++ b/src/interfaces/ecpg/ecpglib/descriptor.c @@ -217,7 +217,7 @@ get_char_item(int lineno, void *var, enum ECPGttype vartype, char *value, int va (struct ECPGgeneric_varchar *) var; if (varcharsize == 0) - strncpy(variable->arr, value, strlen(value)); + memcpy(variable->arr, value, strlen(value)); else strncpy(variable->arr, value, varcharsize); diff --git a/src/interfaces/ecpg/pgtypeslib/common.c b/src/interfaces/ecpg/pgtypeslib/common.c index 9084fd06b4..fd29e30a3b 100644 --- a/src/interfaces/ecpg/pgtypeslib/common.c +++ b/src/interfaces/ecpg/pgtypeslib/common.c @@ -42,10 +42,8 @@ pgtypes_fmt_replace(union un_fmt_comb replace_val, int replace_type, char **outp i = strlen(replace_val.str_val); if (i + 1 <= *pstr_len) { - /* - * copy over i + 1 bytes, that includes the tailing terminator - */ - strncpy(*output, replace_val.str_val, i + 1); + /* include trailing terminator in what we copy */ + memcpy(*output, replace_val.str_val, i + 1); *pstr_len -= i; *output += i; if (replace_type == PGTYPES_TYPE_STRING_MALLOCED)