Skip to content

Commit bbfa9ce

Browse files
Jake ChampionJakeChampion
authored andcommitted
resize the buffers if they are not the correct size
1 parent 35c3b9c commit bbfa9ce

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

runtime/js-compute-runtime/fastly-world/fastly_world_adapter.cpp

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -188,16 +188,26 @@ bool fastly_http_req_downstream_client_ip_addr(fastly_world_list_u8_t *ret, fast
188188

189189
bool fastly_http_req_downstream_tls_cipher_openssl_name(fastly_world_string_t *ret,
190190
fastly_error_t *err) {
191-
ret->ptr = static_cast<char *>(cabi_malloc(128, 1));
192-
return convert_result(fastly::req_downstream_tls_cipher_openssl_name(
193-
reinterpret_cast<char *>(ret->ptr), 128, &ret->len),
194-
err);
191+
auto default_size = 128;
192+
ret->ptr = static_cast<char *>(cabi_malloc(default_size, 1));
193+
auto status = fastly::req_downstream_tls_cipher_openssl_name(
194+
reinterpret_cast<char *>(ret->ptr), default_size, &ret->len);
195+
if (status == FASTLY_ERROR_BUFFER_LEN) {
196+
cabi_realloc(ret->ptr, default_size, 4, ret->len);
197+
status = fastly::req_downstream_tls_cipher_openssl_name(reinterpret_cast<char *>(ret->ptr), ret->len, &ret->len);
198+
}
199+
return convert_result(status, err);
195200
}
196201

197202
bool fastly_http_req_downstream_tls_protocol(fastly_world_string_t *ret, fastly_error_t *err) {
198-
ret->ptr = static_cast<char *>(cabi_malloc(32, 1));
199-
return convert_result(
200-
fastly::req_downstream_tls_protocol(reinterpret_cast<char *>(ret->ptr), 32, &ret->len), err);
203+
auto default_size = 32;
204+
ret->ptr = static_cast<char *>(cabi_malloc(default_size, 1));
205+
auto status = fastly::req_downstream_tls_protocol(reinterpret_cast<char *>(ret->ptr), default_size, &ret->len);
206+
if (status == FASTLY_ERROR_BUFFER_LEN) {
207+
cabi_realloc(ret->ptr, default_size, 4, ret->len);
208+
status = fastly::req_downstream_tls_protocol(reinterpret_cast<char *>(ret->ptr), ret->len, &ret->len);
209+
}
210+
return convert_result(status, err);
201211
}
202212

203213
bool fastly_http_req_downstream_tls_raw_client_certificate(fastly_world_list_u8_t *ret,
@@ -215,9 +225,14 @@ bool fastly_http_req_downstream_tls_raw_client_certificate(fastly_world_list_u8_
215225
}
216226

217227
bool fastly_http_req_downstream_tls_ja3_md5(fastly_world_list_u8_t *ret, fastly_error_t *err) {
218-
ret->ptr = static_cast<uint8_t *>(cabi_malloc(16, 1));
219-
return convert_result(
220-
fastly::req_downstream_tls_ja3_md5(reinterpret_cast<char *>(ret->ptr), &ret->len), err);
228+
auto default_size = 16;
229+
ret->ptr = static_cast<uint8_t *>(cabi_malloc(default_size, 1));
230+
auto status = fastly::req_downstream_tls_ja3_md5(reinterpret_cast<char *>(ret->ptr), &ret->len);
231+
if (status == FASTLY_ERROR_BUFFER_LEN) {
232+
cabi_realloc(ret->ptr, default_size, 4, ret->len);
233+
status = fastly::req_downstream_tls_ja3_md5(reinterpret_cast<char *>(ret->ptr, &ret->len);
234+
}
235+
return convert_result(status, err);
221236
}
222237
bool fastly_http_req_downstream_tls_client_hello(fastly_world_list_u8_t *ret, fastly_error_t *err) {
223238
auto default_size = 512;

0 commit comments

Comments
 (0)