summaryrefslogtreecommitdiffstats
path: root/scan_asn1rawint.c
diff options
context:
space:
mode:
authorSimon Rettberg2014-03-15 01:49:50 +0100
committerSimon Rettberg2014-03-15 01:49:50 +0100
commitbedd2e7ccb1595c23e159eaa952ae1b0b5a3d2ad (patch)
treec7d1995a09f6ed0c4e6873252e957d72f5d07d07 /scan_asn1rawint.c
downloadldadp-bedd2e7ccb1595c23e159eaa952ae1b0b5a3d2ad.tar.gz
ldadp-bedd2e7ccb1595c23e159eaa952ae1b0b5a3d2ad.tar.xz
ldadp-bedd2e7ccb1595c23e159eaa952ae1b0b5a3d2ad.zip
Lean and mean initial commit
Not much functionality yet
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;
+}