summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/codec-json/json.tmpl.h24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/codec-json/json.tmpl.h b/src/codec-json/json.tmpl.h
index 3d3ad91..9a28fe9 100644
--- a/src/codec-json/json.tmpl.h
+++ b/src/codec-json/json.tmpl.h
@@ -445,11 +445,25 @@ struct json_decode<schema::String, RootSchema, ToDecode> {
}
} break;
case '"':
- string_done = true;
- break;
- default:
- iss<<buff.read();
- break;
+ string_done = true;
+ break;
+ default:{
+ // Avoids Control sequences
+ if(buff.read() >= ' ' && buff.read() <= '~'){
+ iss<<buff.read();
+ }
+ // Avoid Unicode
+ else if (buff.read() < 0) {
+ do {
+ buff.read_advance(1);
+ if(buff.read_composite_length() == 0){
+ return make_error<err::buffer_exhausted>();
+ }
+ } while( buff.read() < 0 );
+ iss<<'?';
+ }
+ break;
+ }
}
buff.read_advance(1);
}