aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2006-07-27 13:16:51 +0000
committerLev Walkin <vlm@lionet.info>2006-07-27 13:16:51 +0000
commit253cfcf2754a50a84b0f551c770749744d66bc05 (patch)
tree78e2fa1707a4d40f0dc24f1da75f962dbbf33470
parentfa8b09da92bf436c990a83b043185bd040e45ce9 (diff)
early detection
-rw-r--r--skeletons/ber_tlv_length.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/skeletons/ber_tlv_length.c b/skeletons/ber_tlv_length.c
index 5edd3524..b87e75e0 100644
--- a/skeletons/ber_tlv_length.c
+++ b/skeletons/ber_tlv_length.c
@@ -51,13 +51,14 @@ ber_fetch_length(int _is_constructed, const void *bufptr, size_t size,
}
if(oct == 0) {
- ber_tlv_len_t lenplusepsilon = len + 1024;
+ ber_tlv_len_t lenplusepsilon = (size_t)len + 1024;
/*
* Here length may be very close or equal to 2G.
* However, the arithmetics used in some decoders
* may add some (small) quantities to the length,
* to check the resulting value against some limits.
- * This may result in integer wrap-around.
+ * This may result in integer wrap-around, which
+ * we try to avoid by checking it earlier here.
*/
if(lenplusepsilon < 0) {
/* Too large length value */