From 2675ad1c63604018d72c8f3d4fff3f28f6f5b52c Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Wed, 21 Nov 2012 16:04:13 +0000 Subject: [PATCH] libs/web: fix luci.http.write_json() to properly encode control chars in strings --- libs/web/luasrc/http.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libs/web/luasrc/http.lua b/libs/web/luasrc/http.lua index 18112507c..c53307a5a 100644 --- a/libs/web/luasrc/http.lua +++ b/libs/web/luasrc/http.lua @@ -4,9 +4,6 @@ LuCI - HTTP-Interaction Description: HTTP-Header manipulator and form variable preprocessor -FileId: -$Id$ - License: Copyright 2008 Steven Barth @@ -334,12 +331,14 @@ function write_json(x) end elseif type(x) == "number" or type(x) == "boolean" then if (x ~= x) then - -- NaN is the only value that doesn't equal to itself. + -- NaN is the only value that doesn't equal to itself. write("Number.NaN") else write(tostring(x)) end else - write("%q" % tostring(x)) + write('"%s"' % tostring(x):gsub('["%z\1-\31]', function(c) + return '\\u%04x' % c:byte(1) + end)) end end -- 2.11.0