Skip to content

Commit 6722522

Browse files
committed
only call marker() functions once.
one the second pass, call set()
1 parent 23b16b4 commit 6722522

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

src/protocols/der/decode.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,8 @@ static ssize_t fr_der_decode_set(TALLOC_CTX *ctx, fr_pair_list_t *out, fr_dict_a
924924
}
925925

926926
if (flags->is_set_of) {
927+
fr_dbuff_marker_t current_value_marker;
928+
927929
/*
928930
* There should only be one child in a "set_of". We can't check this when we load
929931
* the dictionaries, because there is no "finalize" callback.
@@ -939,8 +941,9 @@ static ssize_t fr_der_decode_set(TALLOC_CTX *ctx, fr_pair_list_t *out, fr_dict_a
939941
return -1;
940942
}
941943

944+
fr_dbuff_marker(&current_value_marker, &our_in);
945+
942946
while (fr_dbuff_remaining(&our_in) > 0) {
943-
fr_dbuff_marker_t current_value_marker;
944947
ssize_t ret;
945948
uint8_t current_tag;
946949
uint8_t *current_marker = fr_dbuff_current(&our_in);
@@ -956,7 +959,7 @@ static ssize_t fr_der_decode_set(TALLOC_CTX *ctx, fr_pair_list_t *out, fr_dict_a
956959
return ret;
957960
}
958961

959-
fr_dbuff_marker(&current_value_marker, &our_in);
962+
fr_dbuff_set(&current_value_marker, &our_in);
960963

961964
/*
962965
* Ensure that the contents of the tags are sorted.

src/protocols/der/encode.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,6 +1121,7 @@ static ssize_t fr_der_encode_X509_extensions(fr_dbuff_t *dbuff, fr_dcursor_t *cu
11211121
ssize_t slen = 0;
11221122
size_t is_critical = 0;
11231123
uint64_t max, num;
1124+
fr_dbuff_marker_t length_start, inner_seq_len_start;
11241125

11251126
vp = fr_dcursor_current(cursor);
11261127
PAIR_VERIFY(vp);
@@ -1172,10 +1173,12 @@ static ssize_t fr_der_encode_X509_extensions(fr_dbuff_t *dbuff, fr_dcursor_t *cu
11721173
fr_pair_dcursor_child_iter_init(&root_cursor, &vp->children, cursor);
11731174
fr_dcursor_copy(&parent_cursor, &root_cursor);
11741175

1176+
fr_dbuff_marker(&inner_seq_len_start, &our_dbuff);
1177+
fr_dbuff_marker(&length_start, &our_dbuff);
1178+
11751179
while (fr_dcursor_current(&parent_cursor)) {
11761180
uint64_t component;
11771181
int count;
1178-
fr_dbuff_marker_t length_start, inner_seq_len_start;
11791182
fr_pair_t *child;
11801183

11811184
/*
@@ -1194,7 +1197,7 @@ static ssize_t fr_der_encode_X509_extensions(fr_dbuff_t *dbuff, fr_dcursor_t *cu
11941197
slen = fr_der_encode_tag(&our_dbuff, FR_DER_TAG_SEQUENCE, FR_DER_CLASS_UNIVERSAL, FR_DER_TAG_CONSTRUCTED);
11951198
if (slen < 0) return slen;
11961199

1197-
fr_dbuff_marker(&inner_seq_len_start, &our_dbuff);
1200+
fr_dbuff_set(&inner_seq_len_start, &our_dbuff);
11981201
FR_DBUFF_ADVANCE_RETURN(&our_dbuff, 1);
11991202

12001203
/*
@@ -1203,7 +1206,7 @@ static ssize_t fr_der_encode_X509_extensions(fr_dbuff_t *dbuff, fr_dcursor_t *cu
12031206
slen = fr_der_encode_tag(&our_dbuff, FR_DER_TAG_OID, FR_DER_CLASS_UNIVERSAL, FR_DER_TAG_PRIMITIVE);
12041207
if (slen < 0) return slen;
12051208

1206-
fr_dbuff_marker(&length_start, &our_dbuff);
1209+
fr_dbuff_set(&length_start, &our_dbuff);
12071210
FR_DBUFF_ADVANCE_RETURN(&our_dbuff, 1);
12081211

12091212
/*
@@ -1287,7 +1290,7 @@ static ssize_t fr_der_encode_X509_extensions(fr_dbuff_t *dbuff, fr_dcursor_t *cu
12871290
slen = fr_der_encode_tag(&our_dbuff, FR_DER_TAG_OCTETSTRING, FR_DER_CLASS_UNIVERSAL, FR_DER_TAG_PRIMITIVE);
12881291
if (slen < 0) return slen;
12891292

1290-
fr_dbuff_marker(&length_start, &our_dbuff);
1293+
fr_dbuff_set(&length_start, &our_dbuff);
12911294
FR_DBUFF_ADVANCE_RETURN(&our_dbuff, 1);
12921295

12931296
/*

src/protocols/radius/encode.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1380,7 +1380,7 @@ static ssize_t encode_nas_filter_rule(fr_dbuff_t *dbuff,
13801380
FR_DBUFF_IN_MEMCPY_RETURN(&work_dbuff, p, frag_len);
13811381
fr_dbuff_in(&hdr, (uint8_t) UINT8_MAX);
13821382

1383-
fr_dbuff_marker(&hdr, &work_dbuff);
1383+
fr_dbuff_set(&hdr, &work_dbuff);
13841384
fr_dbuff_advance(&hdr, 1);
13851385
FR_DBUFF_IN_BYTES_RETURN(&work_dbuff, (uint8_t)vp->da->attr, 0x02);
13861386
attr_len = 2;
@@ -1416,7 +1416,7 @@ static ssize_t encode_nas_filter_rule(fr_dbuff_t *dbuff,
14161416
* overflow. Create a new header with the zero
14171417
* byte already populated, and keep going.
14181418
*/
1419-
fr_dbuff_marker(&hdr, &work_dbuff);
1419+
fr_dbuff_set(&hdr, &work_dbuff);
14201420
fr_dbuff_advance(&hdr, 1);
14211421
FR_DBUFF_IN_BYTES_RETURN(&work_dbuff, (uint8_t)vp->da->attr, 0x00, 0x00);
14221422
attr_len = 3;

0 commit comments

Comments
 (0)