summaryrefslogtreecommitdiffstats
path: root/src/simutil.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-05-24 11:07:30 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-05-25 16:52:51 -0500
commitea46bae631c831549914cdcf5bedc11a3b591180 (patch)
tree35be631c392001d2444e99ee2efe62538859940b /src/simutil.c
parentfd8d7b8992c03329135639d04f05381845d4495b (diff)
downloadofono-ea46bae631c831549914cdcf5bedc11a3b591180.tar.bz2
simutil: Simplify ber_tlv builder set_length logic
Diffstat (limited to 'src/simutil.c')
-rw-r--r--src/simutil.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/src/simutil.c b/src/simutil.c
index d7d38d55..2509cccd 100644
--- a/src/simutil.c
+++ b/src/simutil.c
@@ -566,22 +566,15 @@ gboolean ber_tlv_builder_next(struct ber_tlv_builder *builder,
{
if (builder->tag != 0xff) {
ber_tlv_builder_write_header(builder);
-
builder->pos += MAX_BER_TLV_HEADER + builder->len;
}
- if (builder->pos + MAX_BER_TLV_HEADER > builder->max)
+ if (ber_tlv_builder_set_length(builder, 0) == FALSE)
return FALSE;
- if (builder->parent)
- if (ber_tlv_builder_set_length(builder->parent, builder->pos +
- MAX_BER_TLV_HEADER) == FALSE)
- return FALSE;
-
builder->class = class;
builder->encoding = encoding;
builder->tag = new_tag;
- builder->len = 0;
return TRUE;
}
@@ -591,14 +584,13 @@ gboolean ber_tlv_builder_next(struct ber_tlv_builder *builder,
gboolean ber_tlv_builder_set_length(struct ber_tlv_builder *builder,
unsigned int new_len)
{
- if (builder->pos + MAX_BER_TLV_HEADER + new_len > builder->max)
+ unsigned int new_pos = builder->pos + MAX_BER_TLV_HEADER + new_len;
+
+ if (new_pos > builder->max)
return FALSE;
if (builder->parent)
- if (ber_tlv_builder_set_length(builder->parent,
- builder->pos + MAX_BER_TLV_HEADER +
- new_len) == FALSE)
- return FALSE;
+ ber_tlv_builder_set_length(builder->parent, new_pos);
builder->len = new_len;