summaryrefslogblamecommitdiffstats
path: root/scan_asn1tagint.c
blob: 49a997411ba6d69288d3bc5a00d10f4e74962e25 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                                                            
#include "asn1.h"

size_t scan_asn1tagint(const char* src,const char* max,unsigned long* val) {
  const char* orig=src;
  unsigned long l=0;
  for (;; ++src) {
    if (src>=max) return 0;
    if (l>(((unsigned long)-1)>>7)) return 0;	/* catch integer overflow */
    l=l*128+(*src&0x7F);
    if (!(*src&0x80)) break;
  }
  *val=l;
  return src-orig+1;
}