diff --git a/common/json_param.c b/common/json_param.c index b95952dd4..1a761112c 100644 --- a/common/json_param.c +++ b/common/json_param.c @@ -444,11 +444,9 @@ struct command_result *param_escaped_string(struct command *cmd, const char **str) { if (tok->type == JSMN_STRING) { - struct json_escape *esc; /* jsmn always gives us ~ well-formed strings. */ - esc = json_escape_string_(cmd, buffer + tok->start, - tok->end - tok->start); - *str = json_escape_unescape(cmd, esc); + *str = json_escape_unescape_len(cmd, buffer + tok->start, + tok->end - tok->start); if (*str) return NULL; } diff --git a/common/test/run-bolt12_decode.c b/common/test/run-bolt12_decode.c index ae4cd8b42..4702d23f2 100644 --- a/common/test/run-bolt12_decode.c +++ b/common/test/run-bolt12_decode.c @@ -190,13 +190,11 @@ int main(int argc, char *argv[]) char *fail; const char *str; size_t dlen; - struct json_escape *esc; assert(json_to_bool(json, json_get_member(json, t, "valid"), &valid)); strtok = json_get_member(json, t, "string"); - esc = json_escape_string_(tmpctx, json + strtok->start, - strtok->end - strtok->start); - str = json_escape_unescape(tmpctx, esc); + str = json_escape_unescape_len(tmpctx, json + strtok->start, + strtok->end - strtok->start); actual = (string_to_data(tmpctx, str, strlen(str), "lno", &dlen, &fail) != NULL); assert(actual == valid); diff --git a/lightningd/jsonrpc.c b/lightningd/jsonrpc.c index 4b240808c..43286a289 100644 --- a/lightningd/jsonrpc.c +++ b/lightningd/jsonrpc.c @@ -1393,20 +1393,14 @@ static void setup_command_usage(struct lightningd *ld, bool jsonrpc_command_add(struct jsonrpc *rpc, struct json_command *command, const char *usage TAKES) { - struct json_escape *esc; const char *unescaped; if (!command_add(rpc, command)) return false; - esc = json_escape_string_(tmpctx, usage, strlen(usage)); - unescaped = json_escape_unescape(command, esc); + unescaped = json_escape_unescape_len(command, usage, strlen(usage)); if (!unescaped) - unescaped = tal_strdup(command, usage); - else { - if (taken(usage)) - tal_free(usage); - } + return false; strmap_add(&rpc->usagemap, command->name, unescaped); tal_add_destructor2(command, destroy_json_command, rpc); diff --git a/lightningd/runes.c b/lightningd/runes.c index 9a4c6fdef..77be7a30a 100644 --- a/lightningd/runes.c +++ b/lightningd/runes.c @@ -484,10 +484,8 @@ static struct rune_altern *rune_altern_from_json(const tal_t *ctx, /* We still need to unescape here, for \\ -> \. JSON doesn't * allow unnecessary \ */ const char *unescape; - struct json_escape *e = json_escape_string_(tmpctx, - buffer + tok->start, - tok->end - tok->start); - unescape = json_escape_unescape(tmpctx, e); + unescape = json_escape_unescape_len(tmpctx, buffer + tok->start, + tok->end - tok->start); if (!unescape) return NULL;