From 23a01347f1fddf2697ef39f8c37a34208936484c Mon Sep 17 00:00:00 2001 From: munja Date: Mon, 28 Mar 2022 15:54:28 +0100 Subject: [PATCH 1/2] fix: support SOH, STX and DC1 control characters in mp_jsonout --- all.sas | 15 ++++++++++++--- base/mp_jsonout.sas | 5 ++++- meta/mm_createwebservice.sas | 5 ++++- sasjs/sasjsconfig.json | 4 ++++ viya/mv_createwebservice.sas | 5 ++++- 5 files changed, 28 insertions(+), 6 deletions(-) diff --git a/all.sas b/all.sas index 371a2d2..aca7519 100644 --- a/all.sas +++ b/all.sas @@ -8417,8 +8417,11 @@ options prxchange('s/'!!'0A'x!!'/\n/',-1, prxchange('s/'!!'0D'x!!'/\r/',-1, prxchange('s/'!!'09'x!!'/\t/',-1, + prxchange('s/'!!'01'x!!'/\\u0001/',-1, /* SOH */ + prxchange('s/'!!'02'x!!'/\\u0002/',-1, /* STX */ + prxchange('s/'!!'11'x!!'/\\u0011/',-1, /* DC1 */ prxchange('s/\\/\\\\/',-1,&&name&i) - )))))!!'"'; + ))))))))!!'"'; %end; %end; run; @@ -14927,8 +14930,11 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' )))))!!''"''; '; + put ' ))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; '; @@ -20388,8 +20394,11 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' )))))!!''"''; '; + put ' ))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; '; diff --git a/base/mp_jsonout.sas b/base/mp_jsonout.sas index dc750fc..27af000 100644 --- a/base/mp_jsonout.sas +++ b/base/mp_jsonout.sas @@ -203,8 +203,11 @@ prxchange('s/'!!'0A'x!!'/\n/',-1, prxchange('s/'!!'0D'x!!'/\r/',-1, prxchange('s/'!!'09'x!!'/\t/',-1, + prxchange('s/'!!'01'x!!'/\\u0001/',-1, /* SOH */ + prxchange('s/'!!'02'x!!'/\\u0002/',-1, /* STX */ + prxchange('s/'!!'11'x!!'/\\u0011/',-1, /* DC1 */ prxchange('s/\\/\\\\/',-1,&&name&i) - )))))!!'"'; + ))))))))!!'"'; %end; %end; run; diff --git a/meta/mm_createwebservice.sas b/meta/mm_createwebservice.sas index 7e54e4b..4e118d9 100644 --- a/meta/mm_createwebservice.sas +++ b/meta/mm_createwebservice.sas @@ -236,8 +236,11 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' )))))!!''"''; '; + put ' ))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; '; diff --git a/sasjs/sasjsconfig.json b/sasjs/sasjsconfig.json index a02229f..a88f06c 100644 --- a/sasjs/sasjsconfig.json +++ b/sasjs/sasjsconfig.json @@ -93,6 +93,10 @@ "serverType": "SAS9", "appLoc": "dummy", "macroFolders": [ + "meta", + "metax", + "server", + "viya", "tests/sas9only", "tests/viyaonly" ] diff --git a/viya/mv_createwebservice.sas b/viya/mv_createwebservice.sas index 6b73e1d..ebe088c 100644 --- a/viya/mv_createwebservice.sas +++ b/viya/mv_createwebservice.sas @@ -380,8 +380,11 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' )))))!!''"''; '; + put ' ))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; '; From 6af14236661cce540710f68e8d01a609f75e24fd Mon Sep 17 00:00:00 2001 From: munja Date: Mon, 28 Mar 2022 16:26:58 +0100 Subject: [PATCH 2/2] fix: more invisibles --- all.sas | 18 +++++++++++++++--- base/mp_jsonout.sas | 6 +++++- meta/mm_createwebservice.sas | 6 +++++- viya/mv_createwebservice.sas | 6 +++++- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/all.sas b/all.sas index aca7519..b51cf41 100644 --- a/all.sas +++ b/all.sas @@ -8417,11 +8417,15 @@ options prxchange('s/'!!'0A'x!!'/\n/',-1, prxchange('s/'!!'0D'x!!'/\r/',-1, prxchange('s/'!!'09'x!!'/\t/',-1, + prxchange('s/'!!'00'x!!'/\\u0000/',-1, /* NUL */ + prxchange('s/'!!'0E'x!!'/\\u000E/',-1, /* SS */ + prxchange('s/'!!'0F'x!!'/\\u000F/',-1, /* SF */ prxchange('s/'!!'01'x!!'/\\u0001/',-1, /* SOH */ prxchange('s/'!!'02'x!!'/\\u0002/',-1, /* STX */ + prxchange('s/'!!'02'x!!'/\\u0010/',-1, /* DLE */ prxchange('s/'!!'11'x!!'/\\u0011/',-1, /* DC1 */ prxchange('s/\\/\\\\/',-1,&&name&i) - ))))))))!!'"'; + ))))))))))))!!'"'; %end; %end; run; @@ -14930,11 +14934,15 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''00''x!!''/\\u0000/'',-1, /* NUL */ '; + put ' prxchange(''s/''!!''0E''x!!''/\\u000E/'',-1, /* SS */ '; + put ' prxchange(''s/''!!''0F''x!!''/\\u000F/'',-1, /* SF */ '; put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0010/'',-1, /* DLE */ '; put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' ))))))))!!''"''; '; + put ' ))))))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; '; @@ -20394,11 +20402,15 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''00''x!!''/\\u0000/'',-1, /* NUL */ '; + put ' prxchange(''s/''!!''0E''x!!''/\\u000E/'',-1, /* SS */ '; + put ' prxchange(''s/''!!''0F''x!!''/\\u000F/'',-1, /* SF */ '; put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0010/'',-1, /* DLE */ '; put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' ))))))))!!''"''; '; + put ' ))))))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; '; diff --git a/base/mp_jsonout.sas b/base/mp_jsonout.sas index 27af000..c68fb30 100644 --- a/base/mp_jsonout.sas +++ b/base/mp_jsonout.sas @@ -203,11 +203,15 @@ prxchange('s/'!!'0A'x!!'/\n/',-1, prxchange('s/'!!'0D'x!!'/\r/',-1, prxchange('s/'!!'09'x!!'/\t/',-1, + prxchange('s/'!!'00'x!!'/\\u0000/',-1, /* NUL */ + prxchange('s/'!!'0E'x!!'/\\u000E/',-1, /* SS */ + prxchange('s/'!!'0F'x!!'/\\u000F/',-1, /* SF */ prxchange('s/'!!'01'x!!'/\\u0001/',-1, /* SOH */ prxchange('s/'!!'02'x!!'/\\u0002/',-1, /* STX */ + prxchange('s/'!!'02'x!!'/\\u0010/',-1, /* DLE */ prxchange('s/'!!'11'x!!'/\\u0011/',-1, /* DC1 */ prxchange('s/\\/\\\\/',-1,&&name&i) - ))))))))!!'"'; + ))))))))))))!!'"'; %end; %end; run; diff --git a/meta/mm_createwebservice.sas b/meta/mm_createwebservice.sas index 4e118d9..374e1c7 100644 --- a/meta/mm_createwebservice.sas +++ b/meta/mm_createwebservice.sas @@ -236,11 +236,15 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''00''x!!''/\\u0000/'',-1, /* NUL */ '; + put ' prxchange(''s/''!!''0E''x!!''/\\u000E/'',-1, /* SS */ '; + put ' prxchange(''s/''!!''0F''x!!''/\\u000F/'',-1, /* SF */ '; put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0010/'',-1, /* DLE */ '; put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' ))))))))!!''"''; '; + put ' ))))))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; '; diff --git a/viya/mv_createwebservice.sas b/viya/mv_createwebservice.sas index ebe088c..fcb7abf 100644 --- a/viya/mv_createwebservice.sas +++ b/viya/mv_createwebservice.sas @@ -380,11 +380,15 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''00''x!!''/\\u0000/'',-1, /* NUL */ '; + put ' prxchange(''s/''!!''0E''x!!''/\\u000E/'',-1, /* SS */ '; + put ' prxchange(''s/''!!''0F''x!!''/\\u000F/'',-1, /* SF */ '; put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0010/'',-1, /* DLE */ '; put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' ))))))))!!''"''; '; + put ' ))))))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; ';