From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Edward O'Connor" Newsgroups: gmane.emacs.devel Subject: patch: strict key encoding for json.el Date: Mon, 20 Aug 2012 14:15:08 -0700 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=f46d042dfd735b06a104c7b90219 X-Trace: ger.gmane.org 1345497336 13679 80.91.229.3 (20 Aug 2012 21:15:36 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 20 Aug 2012 21:15:36 +0000 (UTC) Cc: Nic James Ferrier To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Aug 20 23:15:37 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1T3ZJw-0007K5-J0 for ged-emacs-devel@m.gmane.org; Mon, 20 Aug 2012 23:15:36 +0200 Original-Received: from localhost ([::1]:58356 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3ZJu-0003RN-Pg for ged-emacs-devel@m.gmane.org; Mon, 20 Aug 2012 17:15:34 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:47402) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3ZJr-0003RD-Qk for emacs-devel@gnu.org; Mon, 20 Aug 2012 17:15:32 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T3ZJq-00022O-Ss for emacs-devel@gnu.org; Mon, 20 Aug 2012 17:15:31 -0400 Original-Received: from mail-pb0-f41.google.com ([209.85.160.41]:34713) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3ZJq-00022A-Mw for emacs-devel@gnu.org; Mon, 20 Aug 2012 17:15:30 -0400 Original-Received: by pbbro12 with SMTP id ro12so8189463pbb.0 for ; Mon, 20 Aug 2012 14:15:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:cc:content-type; bh=/jMdUnZx47IHZjjEdbB8JqL6Ey78XnuhQjvggYQ+vpo=; b=rkWuPw4WcF8Jhpf/sPkMtJnpG2I6QZGwbhZikya8czJxQe7b8VQdrOenSCIvLjDSkB p8rUiNl0l0/VnOnBXzPrMuhoclHZif3A8UA70wxSAhsDUAxJFzYgDeQruPA/irMbrWHB Ssg9coIjIJji2eS3Jpue5W9NVG3xxwOAORc4CcZQVsU8tPORxw2ytyLEeBMxbzMJ2EKI fc+IRA0Jlq2jGZuDyXHxy+xhKL1Rqx2TwmZv63tFvTbUYg1xx07tRqlb6jcs8RQi/Prd cmYEVsLqg9NuohY+i5p+yckSFdOoJGqAyCKrEHp1jffAPrNTXPq256V9YSXW82+zXUdo YyaQ== Original-Received: by 10.66.75.202 with SMTP id e10mr32798978paw.55.1345497329239; Mon, 20 Aug 2012 14:15:29 -0700 (PDT) Original-Received: by 10.68.50.40 with HTTP; Mon, 20 Aug 2012 14:15:08 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.160.41 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:152703 Archived-At: --f46d042dfd735b06a104c7b90219 Content-Type: text/plain; charset=UTF-8 Hi, Nic Ferrier pointed out that the JSON encoder can produce invalid JSON object keys in some cases. To guard against this, the attached patch adds a new function, `json-encode-key', which throws if it's object doesn't map to a JSON string. It then uses this function everywhere it creates JSON objects. I've only lightly tested it, but "It Should Work(TM)". Ted --f46d042dfd735b06a104c7b90219 Content-Type: application/octet-stream; name="json-strict-key-encoding.patch" Content-Disposition: attachment; filename="json-strict-key-encoding.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h642a1eo0 LS0tIG9yaWcuZWwJMjAxMi0wOC0yMCAxNDoxMTozOC4wMDAwMDAwMDAgLTA3MDAKKysrIGpzb24u ZWwJMjAxMi0wOC0yMCAxNDoxMTowMy4wMDAwMDAwMDAgLTA3MDAKQEAgLTE3NCw2ICsxNzQsMTAg QEAKIChwdXQgJ2pzb24tc3RyaW5nLWZvcm1hdCAnZXJyb3ItY29uZGl0aW9ucwogICAgICAnKGpz b24tc3RyaW5nLWZvcm1hdCBqc29uLWVycm9yIGVycm9yKSkKIAorKHB1dCAnanNvbi1rZXktZm9y bWF0ICdlcnJvci1tZXNzYWdlICJCYWQgSlNPTiBvYmplY3Qga2V5IikKKyhwdXQgJ2pzb24ta2V5 LWZvcm1hdCAnZXJyb3ItY29uZGl0aW9ucworICAgICAnKGpzb24ta2V5LWZvcm1hdCBqc29uLWVy cm9yIGVycm9yKSkKKwogKHB1dCAnanNvbi1vYmplY3QtZm9ybWF0ICdlcnJvci1tZXNzYWdlICJC YWQgSlNPTiBvYmplY3QiKQogKHB1dCAnanNvbi1vYmplY3QtZm9ybWF0ICdlcnJvci1jb25kaXRp b25zCiAgICAgICcoanNvbi1vYmplY3QtZm9ybWF0IGpzb24tZXJyb3IgZXJyb3IpKQpAQCAtMzIx LDYgKzMyNSwxNSBAQAogICAiUmV0dXJuIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBTVFJJTkcu IgogICAoZm9ybWF0ICJcIiVzXCIiIChtYXBjb25jYXQgJ2pzb24tZW5jb2RlLWNoYXIgc3RyaW5n ICIiKSkpCiAKKyhkZWZ1biBqc29uLWVuY29kZS1rZXkgKG9iamVjdCkKKyAgIlJldHVybiBhIEpT T04gcmVwcmVzZW50YXRpb24gb2YgT0JKRUNULgorSWYgdGhlIHJlc3VsdGluZyBKU09OIG9iamVj dCBpc24ndCBhIHZhbGlkIEpTT04gb2JqZWN0IGtleSwKK3RoaXMgc2lnbmFscyBganNvbi1rZXkt Zm9ybWF0Jy4iCisgIChsZXQgKChlbmNvZGVkIChqc29uLWVuY29kZSBvYmplY3QpKSkKKyAgICAo dW5sZXNzIChzdHJpbmdwIChqc29uLXJlYWQtZnJvbS1zdHJpbmcgZW5jb2RlZCkpCisgICAgICAo c2lnbmFsICdqc29uLWtleS1mb3JtYXQgKGxpc3Qgb2JqZWN0KSkpCisgICAgZW5jb2RlZCkpCisK IDs7OyBKU09OIE9iamVjdHMKIAogKGRlZnVuIGpzb24tbmV3LW9iamVjdCAoKQpAQCAtMzk1LDcg KzQwOCw3IEBACiAgICAgICAgICAgICAgKG1hcGhhc2gKICAgICAgICAgICAgICAgKGxhbWJkYSAo ayB2KQogICAgICAgICAgICAgICAgIChwdXNoIChmb3JtYXQgIiVzOiVzIgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGpzb24tZW5jb2RlIGspCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoanNvbi1lbmNvZGUta2V5IGspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoanNvbi1lbmNvZGUgdikpCiAgICAgICAgICAgICAgICAgICAgICAgcikpCiAgICAgICAgICAg ICAgIGhhc2gtdGFibGUpCkBAIC00MDksNyArNDIyLDcgQEAKICAgKGZvcm1hdCAieyVzfSIKICAg ICAgICAgICAoanNvbi1qb2luIChtYXBjYXIgKGxhbWJkYSAoY29ucykKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZm9ybWF0ICIlczolcyIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChqc29uLWVuY29kZSAoY2FyIGNvbnMpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGpzb24tZW5jb2RlLWtleSAoY2FyIGNvbnMpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb24tZW5jb2RlIChjZHIgY29u cykpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpc3QpCiAgICAgICAgICAgICAg ICAgICAgICAiLCAiKSkpCkBAIC00MTgsNyArNDMxLDcgQEAKICAgIlJldHVybiBhIEpTT04gcmVw cmVzZW50YXRpb24gb2YgUExJU1QuIgogICAobGV0IChyZXN1bHQpCiAgICAgKHdoaWxlIHBsaXN0 Ci0gICAgICAocHVzaCAoY29uY2F0IChqc29uLWVuY29kZSAoY2FyIHBsaXN0KSkKKyAgICAgIChw dXNoIChjb25jYXQgKGpzb24tZW5jb2RlLWtleSAoY2FyIHBsaXN0KSkKICAgICAgICAgICAgICAg ICAgICAgIjoiCiAgICAgICAgICAgICAgICAgICAgIChqc29uLWVuY29kZSAoY2FkciBwbGlzdCkp KQogICAgICAgICAgICAgcmVzdWx0KQo= --f46d042dfd735b06a104c7b90219--