get_eoc() is always followed by next_tag(), so don't bother setting
authorKen Raeburn <raeburn@mit.edu>
Thu, 7 Aug 2008 03:06:50 +0000 (03:06 +0000)
committerKen Raeburn <raeburn@mit.edu>
Thu, 7 Aug 2008 03:06:50 +0000 (03:06 +0000)
the variables that it's about to clobber.  Since we don't need any of
the tag info at the call site, push it down into the helper function.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20631 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/asn.1/asn1_k_decode.c
src/lib/krb5/asn.1/krb5_decode.c

index e1d9bb2db7e60fe316827cc223da50078b217a17..91e6ffcf507eb7aa76fb4c28a6adfd7427bb76df 100644 (file)
 }
 
 static asn1_error_code
-asn1_get_eoc_tag (asn1buf *buf, taginfo *tinfo)
+asn1_get_eoc_tag (asn1buf *buf)
 {
     asn1_error_code retval;
+    taginfo t;
 
-    retval = asn1_get_tag_2(buf, tinfo);
+    retval = asn1_get_tag_2(buf, &t);
     if (retval)
        return retval;
-    if (tinfo->asn1class != UNIVERSAL || tinfo->tagnum || tinfo->indef)
+    if (t.asn1class != UNIVERSAL || t.tagnum || t.indef)
        return ASN1_MISSING_EOC;
     return 0;
 }
 
 /* Force check for EOC tag. */
-#define get_eoc()                                                                      \
-    {                                                                                  \
-       taginfo t3;                                                                     \
-       retval = asn1_get_eoc_tag(&subbuf, &t3);                                        \
-       if(retval) return retval;                                                       \
-        /* Copy out to match previous functionality, until better integrated.  */      \
-       asn1class = UNIVERSAL;                                                          \
-       construction = t3.construction;                                                 \
-       tagnum = 0;                                                                     \
-       taglen = t3.length;                                                             \
-       indef = 0;                                                                      \
+#define get_eoc()                              \
+    {                                          \
+       retval = asn1_get_eoc_tag(&subbuf);     \
+       if(retval) return retval;               \
     }
 
 #define alloc_field(var, type)                 \
index f071cbf5285436831c98f5380175e81746dcf0e2..8c6bef73f1ae5a949f1de7ec4c0695c6e03cec29 100644 (file)
@@ -94,27 +94,23 @@ if((var) == NULL) clean_return(ENOMEM)
 }
 
 static asn1_error_code
-asn1_get_eoc_tag (asn1buf *buf, taginfo *tinfo)
+asn1_get_eoc_tag (asn1buf *buf)
 {
     asn1_error_code retval;
+    taginfo t;
 
-    retval = asn1_get_tag_2(buf, tinfo);
+    retval = asn1_get_tag_2(buf, &t);
     if (retval)
        return retval;
-    if (tinfo->asn1class != UNIVERSAL || tinfo->tagnum || tinfo->indef)
+    if (t.asn1class != UNIVERSAL || t.tagnum || t.indef)
        return ASN1_MISSING_EOC;
     return 0;
 }
 
-#define get_eoc()                                              \
-{                                                              \
-    taginfo t3;                                                        \
-    retval = asn1_get_eoc_tag(&subbuf, &t3);                   \
-    if (retval) return retval;                                 \
-    asn1class = UNIVERSAL;                                     \
-    construction = t3.construction;                            \
-    tagnum = 0;                                                        \
-    indef = 0;                                                 \
+#define get_eoc()                      \
+{                                      \
+    retval = asn1_get_eoc_tag(&subbuf);        \
+    if (retval) return retval;         \
 }
 
 /* decode sequence header and initialize tagnum with the first field */