aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2005-08-15 07:21:22 +0000
committerLev Walkin <vlm@lionet.info>2005-08-15 07:21:22 +0000
commit454ea2cd803880743605f91b7afc95f08633a2cf (patch)
tree3ead2a8d80a1f427081a8c24f475c7f278dad5e6
parent7a080483b1a15e4d6fa413cc28fccd551da13673 (diff)
oops; fixed
-rw-r--r--ChangeLog1
-rwxr-xr-xasn1c/check-xxber.sh12
-rw-r--r--asn1c/unber.c5
3 files changed, 13 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index dfd71fe1..611a932d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,7 @@
* Made unber(1) program more verbose: effective structure length is
now displayed as L="<n>" at the closing tag. (Test check-xxber.sh).
* Fixed unber(1)'s -1 switch for indefinite encoding length.
+ * New command line option for unber(1): -m to enable minimalistic mode.
0.9.17: 2005-Aug-07
diff --git a/asn1c/check-xxber.sh b/asn1c/check-xxber.sh
index cb8cdeec..ea989ec7 100755
--- a/asn1c/check-xxber.sh
+++ b/asn1c/check-xxber.sh
@@ -10,9 +10,15 @@ diff -u . . 2>/dev/null && diffArgs="$diffArgs -u" # Unified diff output
cat<<EOM > $ORIG
<I O="0" T="[UNIVERSAL 16]" TL="2" V="Indefinite" A="SEQUENCE">
<P O="2" T="[UNIVERSAL 19]" TL="2" V="2" A="PrintableString">&#x55;&#x53;</P>
-<C O="6" T="[UNIVERSAL 16]" TL="2" V="6" A="SEQUENCE">
+<C O="6" T="[UNIVERSAL 16]" TL="2" V="22" A="SEQUENCE">
<P O="8" T="[UNIVERSAL 2]" TL="2" V="4" A="INTEGER">&#x31;&#xa6;&#x20;&#x47;</P>
-</C O="14" T="[UNIVERSAL 16]" A="SEQUENCE" L="8">
+<C O="14" T="[UNIVERSAL 16]" TL="2" V="6" A="SEQUENCE">
+<P O="16" T="[UNIVERSAL 2]" TL="2" V="4" A="INTEGER">&#x31;&#xa6;&#x20;&#x47;</P>
+</C O="22" T="[UNIVERSAL 16]" A="SEQUENCE" L="8">
+<C O="22" T="[UNIVERSAL 16]" TL="2" V="6" A="SEQUENCE">
+<P O="24" T="[UNIVERSAL 2]" TL="2" V="4" A="INTEGER">&#x31;&#xa6;&#x20;&#x47;</P>
+</C O="30" T="[UNIVERSAL 16]" A="SEQUENCE" L="8">
+</C O="30" T="[UNIVERSAL 16]" A="SEQUENCE" L="24">
EOM
./enber $ORIG | ./unber -p -i 0 - > $TEST 2>&1
@@ -25,7 +31,7 @@ if [ "$diffExitCode" = "0" ]; then
fi
# Append necessary terminator
-echo '</I O="14" T="[UNIVERSAL 0]" TL="2" L="16">' >> $ORIG
+echo '</I O="30" T="[UNIVERSAL 0]" TL="2" L="32">' >> $ORIG
# Try trancoding again
./enber $ORIG | ./unber -p -i 0 - > $TEST 2>&1
diff --git a/asn1c/unber.c b/asn1c/unber.c
index 8758ca56..80091812 100644
--- a/asn1c/unber.c
+++ b/asn1c/unber.c
@@ -202,11 +202,11 @@ process_deeper(const char *fname, FILE *fp, asn1c_integer_t *offset, int level,
pd_code_e pdc = PD_FINISHED;
ber_tlv_tag_t tlv_tag;
ber_tlv_len_t tlv_len;
- ber_tlv_len_t local_esize = effective_size;
ssize_t t_len;
ssize_t l_len;
do {
+ ber_tlv_len_t local_esize = 0;
int constr;
int ch;
@@ -295,6 +295,8 @@ process_deeper(const char *fname, FILE *fp, asn1c_integer_t *offset, int level,
*offset += t_len + l_len;
*frame_size += t_len + l_len;
effective_size += t_len + l_len;
+ printf("LES %d + %d + %d\n",
+ (int)local_esize, (int)t_len, (int)l_len);
local_esize += t_len + l_len;
if(expect_eoc && tagbuf[0] == '\0' && tagbuf[1] == '\0') {
@@ -346,7 +348,6 @@ process_deeper(const char *fname, FILE *fp, asn1c_integer_t *offset, int level,
print_TL(1, *offset, level, constr, tblen,
tlv_tag, tlv_len, local_esize);
- local_esize = 0;
tblen = 0;
} while(1);