mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
common/json.c: Have json_add_literal *use* len argument.
The current `json_add_literal` does not use its `len` argument, at all:09c2fef4a4/common/json.c (L1076-L1083)Which is something of a WTF, why even require the `len` argument if it is not even used in the function? This would have been acceptable if it were a callback and the callback-requiring function passed it in always, but this function is not intended to be a callback but instead to be called directly. Existing callers always pass in `strlen(literal)`, so this bug was not noticed before:09c2fef4a4/lightningd/jsonrpc.c (L511)09c2fef4a4/lightningd/jsonrpc.c (L583)09c2fef4a4/lightningd/options.c (L1408-L1409)
This commit is contained in:
committed by
Christian Decker
parent
a418cf5654
commit
20fe5c6ab1
@@ -1077,9 +1077,9 @@ void json_add_literal(struct json_stream *result, const char *fieldname,
|
|||||||
const char *literal, int len)
|
const char *literal, int len)
|
||||||
{
|
{
|
||||||
/* Literal may contain quotes, so bypass normal checks */
|
/* Literal may contain quotes, so bypass normal checks */
|
||||||
char *dest = json_member_direct(result, fieldname, strlen(literal));
|
char *dest = json_member_direct(result, fieldname, len);
|
||||||
if (dest)
|
if (dest)
|
||||||
memcpy(dest, literal, strlen(literal));
|
memcpy(dest, literal, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void json_add_stringn(struct json_stream *result, const char *fieldname,
|
void json_add_stringn(struct json_stream *result, const char *fieldname,
|
||||||
|
|||||||
Reference in New Issue
Block a user