diff --git a/src/lib/fastcgi.c b/src/lib/fastcgi.c index 0d03218..4bfe637 100644 --- a/src/lib/fastcgi.c +++ b/src/lib/fastcgi.c @@ -221,7 +221,8 @@ int fastcgi_close_stdin(fastcgi_conn *conn) { int fastcgi_php_error(const fastcgi_conn *conn, const char *msg, int msg_len, char *err_msg) { char *msg_str = malloc(msg_len + 1); char *ptr0 = msg_str; - strncpy(msg_str, msg, msg_len); + memcpy(msg_str, msg, msg_len); + msg_str[msg_len] = 0; char *ptr1 = NULL; int len; int err = 0; diff --git a/src/lib/http.c b/src/lib/http.c index 1e36a01..a73cb3f 100644 --- a/src/lib/http.c +++ b/src/lib/http.c @@ -262,21 +262,27 @@ int http_add_header_field_len(http_hdr *hdr, const char *name, unsigned long nam if (name_len < sizeof(f->normal.name) && value_len < sizeof(f->normal.value)) { f->type = HTTP_FIELD_NORMAL; - strncpy(f->normal.name, name, name_len); - strncpy(f->normal.value, value, value_len); + memcpy(f->normal.name, name, name_len); + memcpy(f->normal.value, value, value_len); + f->normal.name[name_len] = 0; + f->normal.value[value_len] = 0; http_to_camel_case(f->normal.name, HTTP_PRESERVE); } else if (name_len < sizeof(f->ex_value.name)) { f->type = HTTP_FIELD_EX_VALUE; f->ex_value.value = malloc(value_len + 1); - strncpy(f->ex_value.name, name, name_len); - strncpy(f->ex_value.value, value, value_len); + memcpy(f->ex_value.name, name, name_len); + memcpy(f->ex_value.value, value, value_len); + f->ex_value.name[name_len] = 0; + f->ex_value.value[value_len] = 0; http_to_camel_case(f->ex_value.name, HTTP_PRESERVE); } else { f->type = HTTP_FIELD_EX_NAME; f->ex_name.name = malloc(name_len + 1); f->ex_name.value = malloc(value_len + 1); - strncpy(f->ex_name.name, name, name_len); - strncpy(f->ex_name.value, value, value_len); + memcpy(f->ex_name.name, name, name_len); + memcpy(f->ex_name.value, value, value_len); + f->ex_name.name[name_len] = 0; + f->ex_name.value[value_len] = 0; http_to_camel_case(f->ex_name.name, HTTP_PRESERVE); } diff --git a/src/lib/utils.c b/src/lib/utils.c index a843fd2..ef2d24a 100644 --- a/src/lib/utils.c +++ b/src/lib/utils.c @@ -135,7 +135,8 @@ int mime_is_compressible(const char *type) { } int strcpy_rem_webroot(char *dst, const char *src, long len, const char *webroot) { - strncpy(dst, src, len); + memcpy(dst, src, len); + dst[len] = 0; if (webroot == NULL) return 0;