diff options
Diffstat (limited to 'skeletons/ber_tlv_length.c')
-rw-r--r-- | skeletons/ber_tlv_length.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/skeletons/ber_tlv_length.c b/skeletons/ber_tlv_length.c index 2baa1a10..5edd3524 100644 --- a/skeletons/ber_tlv_length.c +++ b/skeletons/ber_tlv_length.c @@ -51,6 +51,7 @@ ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, } if(oct == 0) { + ber_tlv_len_t lenplusepsilon = len + 1024; /* * Here length may be very close or equal to 2G. * However, the arithmetics used in some decoders @@ -58,7 +59,7 @@ ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, * to check the resulting value against some limits. * This may result in integer wrap-around. */ - if((len + 1024) < len - 1024) { + if(lenplusepsilon < 0) { /* Too large length value */ return -1; } |