Skip to content

Commit 0d89b98

Browse files
cdp: ensure token is a string when needed in parser
Signed-off-by: Francis Bouvier <[email protected]>
1 parent bf56345 commit 0d89b98

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

src/cdp/cdp.zig

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
130141
pub 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

265276
pub 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

Comments
 (0)