API is based on integers instead of long to prevent errors in systems where sizeof...
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 4 Mar 2012 21:50:12 +0000 (22:50 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Tue, 13 Mar 2012 18:34:31 +0000 (19:34 +0100)
NEWS
lib/coding.c
lib/decoding.c
lib/libtasn1.h

diff --git a/NEWS b/NEWS
index 6a7b833..fae31ed 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,8 @@ GNU Libtasn1 NEWS                                     -*- outline -*-
 * Noteworthy changes in release 2.12 (????-??-??) [?]
 - Cleanup license headers.
 - build: Update gnulib files.
+- API is based on integers instead of long to prevent errors in systems
+  where sizeof(int)!=sizeof(long).
 
 * Noteworthy changes in release 2.11 (2011-11-25) [stable]
 - qa: Now builds without compiler warnings with Solaris CC.
index 8b72eba..a1896d5 100644 (file)
@@ -68,7 +68,7 @@ _asn1_error_description_value_not_found (ASN1_TYPE node,
  * The @ans buffer is pre-allocated and must have room for the output.
  **/
 void
-asn1_length_der (unsigned long int len, unsigned char *ans, int *ans_len)
+asn1_length_der (unsigned int len, unsigned char *ans, int *ans_len)
 {
   int k;
   unsigned char temp[SIZEOF_UNSIGNED_LONG_INT];
index ed144f0..e5590f2 100644 (file)
@@ -56,10 +56,10 @@ _asn1_error_description_tag_error (ASN1_TYPE node, char *ErrorDescription)
  * Returns: Return the decoded length value, or -1 on indefinite
  *   length, or -2 when the value was too big.
  **/
-signed long
+signed int
 asn1_get_length_der (const unsigned char *der, int der_len, int *len)
 {
-  signed long ans;
+  signed int ans;
   int k, punt;
 
   *len = 0;
@@ -172,7 +172,7 @@ asn1_get_tag_der (const unsigned char *der, int der_len,
  *
  * Since: 2.0
  **/
-signed long
+signed int
 asn1_get_length_ber (const unsigned char *ber, int ber_len, int *len)
 {
   int ret;
index 289fb57..f18327f 100644 (file)
@@ -261,14 +261,14 @@ extern "C"
                      int *ret_len, unsigned char *str,
                      int str_size, int *bit_len);
 
-  extern ASN1_API signed long
+  extern ASN1_API signed int
     asn1_get_length_der (const unsigned char *der, int der_len, int *len);
 
-  extern ASN1_API signed long
+  extern ASN1_API signed int
     asn1_get_length_ber (const unsigned char *ber, int ber_len, int *len);
 
   extern ASN1_API void
-    asn1_length_der (unsigned long int len, unsigned char *ans, int *ans_len);
+    asn1_length_der (unsigned int len, unsigned char *ans, int *ans_len);
 
   /* Other utility functions. */