From ec8a6cbc43a81b8973f4238cd56645b3bb8246f3 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Mon, 24 May 2010 11:30:59 -0500 Subject: simutil: Simplify ber_tlv_builder_optimize logic --- src/simutil.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'src/simutil.c') diff --git a/src/simutil.c b/src/simutil.c index 2509cccd..c0c72f0a 100644 --- a/src/simutil.c +++ b/src/simutil.c @@ -631,20 +631,23 @@ gboolean ber_tlv_builder_recurse_comprehension(struct ber_tlv_builder *builder, } void ber_tlv_builder_optimize(struct ber_tlv_builder *builder, - unsigned char **pdu, unsigned int *len) + unsigned char **out_pdu, unsigned int *out_len) { + unsigned int len; + unsigned char *pdu; + ber_tlv_builder_write_header(builder); - if (pdu == NULL) - return; + len = builder->pos + MAX_BER_TLV_HEADER + builder->len; - *len = builder->pos + MAX_BER_TLV_HEADER + builder->len; - *pdu = builder->pdu; + for (pdu = builder->pdu; *pdu == 0xff; pdu++) + len--; - while (**pdu == 0xff) { - (*len)--; - (*pdu)++; - } + if (out_pdu) + *out_pdu = pdu; + + if (out_len) + *out_len = len; } gboolean comprehension_tlv_builder_init( -- cgit v1.2.3