diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/codec-json/json.tmpl.h | 24 |
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); } |