@@ -76,20 +76,23 @@ pub fn do(
7676 // handle 2 possible orders:
7777 // - id, method <...>
7878 // - method, id <...>
79- var method_key = ( try scanner . next ()). string ;
79+ var method_key = try nextString ( & scanner ) ;
8080 var method_token : std.json.Token = undefined ;
8181 var id : ? u16 = null ;
8282 // check swap order
8383 if (std .mem .eql (u8 , method_key , "id" )) {
8484 id = try getId (& scanner , method_key );
85- method_key = ( try scanner . next ()). string ;
85+ method_key = try nextString ( & scanner ) ;
8686 method_token = try scanner .next ();
8787 } else {
8888 method_token = try scanner .next ();
8989 }
9090 try checkKey (method_key , "method" );
9191
9292 // retrieve method
93+ if (method_token != .string ) {
94+ return error .WrongTokenType ;
95+ }
9396 const method_name = method_token .string ;
9497 std .log .debug ("cmd: method {s}, id {any}" , .{ method_name , id });
9598
@@ -127,6 +130,14 @@ pub const State = struct {
127130// Utils
128131// -----
129132
133+ fn nextString (scanner : * std.json.Scanner ) ! []const u8 {
134+ const token = try scanner .next ();
135+ if (token != .string ) {
136+ return error .WrongTokenType ;
137+ }
138+ return token .string ;
139+ }
140+
130141pub fn dumpFile (
131142 alloc : std.mem.Allocator ,
132143 id : u16 ,
@@ -259,7 +270,7 @@ fn getSessionId(scanner: *std.json.Scanner, key: []const u8) !?[]const u8 {
259270 if (! std .mem .eql (u8 , "sessionId" , key )) return null ;
260271
261272 // parse "sessionId"
262- return ( try scanner . next ()). string ;
273+ return try nextString ( scanner ) ;
263274}
264275
265276pub fn getMsg (
@@ -277,7 +288,7 @@ pub fn getMsg(
277288 t = try scanner .next ();
278289 if (t == .object_end ) break ;
279290 if (t != .string ) {
280- return error .CDPMsgWrong ;
291+ return error .WrongTokenType ;
281292 }
282293 if (id == null ) {
283294 id = try getId (scanner , t .string );
0 commit comments