Use strncpy() instead of strcpy().

The OpenBSD linker is complaining about it. Even though every single
case strcpy() was used is safe, strncpy() provides a little bit of extra
security, and makes the linker happy.
This commit is contained in:
Jordan Bancino 2023-04-25 21:54:51 +00:00
parent d933d12e1b
commit d83db35df0
5 changed files with 15 additions and 10 deletions

View file

@ -567,6 +567,7 @@ HttpParseHeaders(Stream * fp)
char *headerPtr;
ssize_t i;
size_t len;
if (strcmp(line, "\r\n") == 0 || strcmp(line, "\n") == 0)
{
@ -584,13 +585,14 @@ HttpParseHeaders(Stream * fp)
line[i] = tolower((unsigned char) line[i]);
}
headerKey = Malloc((i + 1) * sizeof(char));
len = i + 1;
headerKey = Malloc(len * sizeof(char));
if (!headerKey)
{
goto error;
}
strcpy(headerKey, line);
strncpy(headerKey, line, len);
headerPtr = line + i + 1;
@ -608,14 +610,15 @@ HttpParseHeaders(Stream * fp)
line[i] = '\0';
}
headerValue = Malloc(strlen(headerPtr) + 1);
len = strlen(headerPtr) + 1;
headerValue = Malloc(len * sizeof(char));
if (!headerValue)
{
Free(headerKey);
goto error;
}
strcpy(headerValue, headerPtr);
strncpy(headerValue, headerPtr, len);
HashMapSet(headers, headerKey, headerValue);
Free(headerKey);

View file

@ -535,7 +535,7 @@ HttpServerWorkerThread(void *args)
requestPathLen = i;
requestPath = Malloc(((requestPathLen + 1) * sizeof(char)));
strcpy(requestPath, pathPtr);
strncpy(requestPath, pathPtr, requestPathLen + 1);
requestProtocol = &pathPtr[i + 1];
line[lineLen - 2] = '\0'; /* Get rid of \r and \n */

View file

@ -523,7 +523,7 @@ JsonDecodeString(Stream * in)
/* Move the output of StrUtf8Encode() into our
* local buffer */
strcpy(a, utf8Ptr);
strncpy(a, utf8Ptr, sizeof(a));
Free(utf8Ptr);
break;
default:
@ -1080,7 +1080,7 @@ JsonDecodeValue(JsonParserState * state)
{
return NULL;
}
strcpy(strValue, state->token);
strncpy(strValue, state->token, state->tokenLen + 1);
value = JsonValueString(strValue);
Free(strValue);
break;
@ -1127,7 +1127,7 @@ JsonDecodeObject(JsonParserState * state)
{
goto error;
}
strcpy(key, state->token);
strncpy(key, state->token, state->tokenLen + 1);
JsonTokenSeek(state);
if (!JsonExpect(state, TOKEN_COLON))

View file

@ -32,10 +32,12 @@
ROUTE_IMPL(RouteCapabilities, path, argp)
{
RouteArgs *args = argp;
HashMap *response;
HashMap *capabilities;
(void) path;
(void) argp;
response = HashMapCreate();
capabilities = HashMapCreate();

View file

@ -101,7 +101,7 @@ StrDuplicate(const char *inStr)
return NULL;
}
strcpy(outStr, inStr);
strncpy(outStr, inStr, len + 1);
return outStr;
}