Changed SILC_ASN1_OCTET_STRING to plain binary data.
[silc.git] / lib / silcasn1 / silcasn1_decode.c
index efb1534f63e4afb5d7bcb997abaa747942da9dd5..ad5fe79e17ea39feef43195e6e8010a199c099d7 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 2003 - 2006 Pekka Riikonen
+  Copyright (C) 2003 - 2007 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -528,7 +528,7 @@ silc_asn1_decoder(SilcAsn1 asn1, SilcStack stack1, SilcAsn1Tag type,
          /* Set two OID values */
          memset(&tmpb, 0, sizeof(tmpb));
          memset(tmpstr, 0, sizeof(tmpstr));
-         snprintf(tmpstr, sizeof(tmpstr) - 1, "%lu.%lu",
+         silc_snprintf(tmpstr, sizeof(tmpstr) - 1, "%lu.%lu",
                   (unsigned long)(rdata[0] & 0xff) / 40,
                   (unsigned long)(rdata[0] & 0xff) % 40);
          silc_buffer_sstrformat(asn1->stack1, &tmpb, tmpstr, SILC_STR_END);
@@ -550,7 +550,7 @@ silc_asn1_decoder(SilcAsn1 asn1, SilcStack stack1, SilcAsn1Tag type,
            oid |= rdata[i];
 
            memset(tmpstr, 0, sizeof(tmpstr));
-           snprintf(tmpstr, sizeof(tmpstr) - 1, ".%lu", (unsigned long)oid);
+           silc_snprintf(tmpstr, sizeof(tmpstr) - 1, ".%lu", (unsigned long)oid);
            silc_buffer_sstrformat(asn1->stack1, &tmpb, tmpstr, SILC_STR_END);
          }
          *oidstr = tmpb.head;
@@ -665,9 +665,10 @@ silc_asn1_decoder(SilcAsn1 asn1, SilcStack stack1, SilcAsn1Tag type,
 
       case SILC_ASN1_TAG_OCTET_STRING:
        {
-         /* Octet string.  We take it as 8-bit ASCII */
+         /* Octet string.  Take data as is. */
          SILC_ASN1_VAD_UCHAR(asn1, opts, unsigned char, s, s_len);
-         SILC_ASN1_DECODE_STRING(SILC_STRING_ASCII, s, s_len);
+         *s = silc_smemdup(stack1, rdata, rdata_len);
+         *s_len = rdata_len;
          break;
        }
 
@@ -845,7 +846,6 @@ SilcBool silc_asn1_decode(SilcAsn1 asn1, SilcBuffer src, ...)
   SILC_ASN1_ARGS(asn1, type, tag, ber_class, opts);
   if (!type) {
     va_end(asn1->ap);
-    asn1->ap = NULL;
     return FALSE;
   }
 
@@ -918,7 +918,6 @@ SilcBool silc_asn1_decode(SilcAsn1 asn1, SilcBuffer src, ...)
   }
 
   va_end(asn1->ap);
-  asn1->ap = NULL;
 
   return ret;
 }