Skip to content

Commit 9c48a48

Browse files
kszczekbluca
authored andcommitted
json: use secure un{base64,hex}mem for sensitive variants
While tracing a LUKS code path in homework, I've noticed that we don't erase buffers when doing unbase64 or unhex on JSON variants, even if the variant is marked as sensitive. (cherry picked from commit 80313c5) (cherry picked from commit cce7df4) (cherry picked from commit 2dee004) (cherry picked from commit d5a7b54)
1 parent 5e532c9 commit 9c48a48

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/shared/json.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4772,14 +4772,14 @@ int json_variant_unbase64(JsonVariant *v, void **ret, size_t *ret_size) {
47724772
if (!json_variant_is_string(v))
47734773
return -EINVAL;
47744774

4775-
return unbase64mem(json_variant_string(v), SIZE_MAX, ret, ret_size);
4775+
return unbase64mem_full(json_variant_string(v), SIZE_MAX, /* secure= */ json_variant_is_sensitive(v), ret, ret_size);
47764776
}
47774777

47784778
int json_variant_unhex(JsonVariant *v, void **ret, size_t *ret_size) {
47794779
if (!json_variant_is_string(v))
47804780
return -EINVAL;
47814781

4782-
return unhexmem(json_variant_string(v), SIZE_MAX, ret, ret_size);
4782+
return unhexmem_full(json_variant_string(v), SIZE_MAX, /* secure= */ json_variant_is_sensitive(v), ret, ret_size);
47834783
}
47844784

47854785
static const char* const json_variant_type_table[_JSON_VARIANT_TYPE_MAX] = {

0 commit comments

Comments
 (0)