summaryrefslogtreecommitdiffstats
path: root/scan_asn1rawint.c
diff options
context:
space:
mode:
Diffstat (limited to 'scan_asn1rawint.c')
-rw-r--r--scan_asn1rawint.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/scan_asn1rawint.c b/scan_asn1rawint.c
new file mode 100644
index 0000000..6f6f676
--- /dev/null
+++ b/scan_asn1rawint.c
@@ -0,0 +1,17 @@
+#include "asn1.h"
+
+size_t scan_asn1rawint(const char* src,const char* max,size_t len,long* l) {
+ size_t i,j;
+ long m;
+ if (src>=max) return 0;
+ if (*src<0) m=-1; else m=0;
+ for (i=j=0; i<len; ++i,++j) {
+ if ((m==0 && *src==0) || (m==-1 && *src==-1)) --j;
+ m=(m<<8)|(unsigned char)*src;
+ ++src;
+ if (src>max) return 0;
+ }
+ if (j>sizeof(long)) return 0;
+ *l=m;
+ return len;
+}