Skip to content

Commit 2381f7f

Browse files
committed
Check integer conversion errors when reading TP from file
1 parent 9ebb55e commit 2381f7f

1 file changed

Lines changed: 62 additions & 21 deletions

File tree

examples/client_base.cc

Lines changed: 62 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -93,27 +93,68 @@ int ClientBase::read_transport_params(const char *path,
9393

9494
for (std::string line; std::getline(f, line);) {
9595
if (util::istarts_with_l(line, "initial_max_streams_bidi=")) {
96-
params->initial_max_streams_bidi = strtoul(
97-
line.c_str() + str_size("initial_max_streams_bidi="), nullptr, 10);
98-
} else if (util::istarts_with_l(line, "initial_max_streams_uni=")) {
99-
params->initial_max_streams_uni = strtoul(
100-
line.c_str() + str_size("initial_max_streams_uni="), nullptr, 10);
101-
} else if (util::istarts_with_l(line,
102-
"initial_max_stream_data_bidi_local=")) {
103-
params->initial_max_stream_data_bidi_local = strtoul(
104-
line.c_str() + str_size("initial_max_stream_data_bidi_local="),
105-
nullptr, 10);
106-
} else if (util::istarts_with_l(line,
107-
"initial_max_stream_data_bidi_remote=")) {
108-
params->initial_max_stream_data_bidi_remote = strtoul(
109-
line.c_str() + str_size("initial_max_stream_data_bidi_remote="),
110-
nullptr, 10);
111-
} else if (util::istarts_with_l(line, "initial_max_stream_data_uni=")) {
112-
params->initial_max_stream_data_uni = strtoul(
113-
line.c_str() + str_size("initial_max_stream_data_uni="), nullptr, 10);
114-
} else if (util::istarts_with_l(line, "initial_max_data=")) {
115-
params->initial_max_data =
116-
strtoul(line.c_str() + str_size("initial_max_data="), nullptr, 10);
96+
if (auto n = util::parse_uint(line.c_str() +
97+
str_size("initial_max_streams_bidi="));
98+
!n) {
99+
return -1;
100+
} else {
101+
params->initial_max_streams_bidi = *n;
102+
}
103+
continue;
104+
}
105+
106+
if (util::istarts_with_l(line, "initial_max_streams_uni=")) {
107+
if (auto n = util::parse_uint(line.c_str() +
108+
str_size("initial_max_streams_uni="));
109+
!n) {
110+
return -1;
111+
} else {
112+
params->initial_max_streams_uni = *n;
113+
}
114+
continue;
115+
}
116+
117+
if (util::istarts_with_l(line, "initial_max_stream_data_bidi_local=")) {
118+
if (auto n = util::parse_uint(
119+
line.c_str() + str_size("initial_max_stream_data_bidi_local="));
120+
!n) {
121+
return -1;
122+
} else {
123+
params->initial_max_stream_data_bidi_local = *n;
124+
}
125+
continue;
126+
}
127+
128+
if (util::istarts_with_l(line, "initial_max_stream_data_bidi_remote=")) {
129+
if (auto n = util::parse_uint(
130+
line.c_str() + str_size("initial_max_stream_data_bidi_remote="));
131+
!n) {
132+
return -1;
133+
} else {
134+
params->initial_max_stream_data_bidi_remote = *n;
135+
}
136+
continue;
137+
}
138+
139+
if (util::istarts_with_l(line, "initial_max_stream_data_uni=")) {
140+
if (auto n = util::parse_uint(line.c_str() +
141+
str_size("initial_max_stream_data_uni="));
142+
!n) {
143+
return -1;
144+
} else {
145+
params->initial_max_stream_data_uni = *n;
146+
}
147+
continue;
148+
}
149+
150+
if (util::istarts_with_l(line, "initial_max_data=")) {
151+
if (auto n =
152+
util::parse_uint(line.c_str() + str_size("initial_max_data="));
153+
!n) {
154+
return -1;
155+
} else {
156+
params->initial_max_data = *n;
157+
}
117158
}
118159
}
119160

0 commit comments

Comments
 (0)