From c236dd6ccbc1cbc195b78910840b946f7674fc5f Mon Sep 17 00:00:00 2001 From: leitner Date: Mon, 14 Jan 2002 18:24:55 +0000 Subject: [PATCH] more work ;) --- scan_asn1BOOLEAN.c | 12 ++++++++++++ scan_ldapsearchrequest.c | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 scan_asn1BOOLEAN.c create mode 100644 scan_ldapsearchrequest.c diff --git a/scan_asn1BOOLEAN.c b/scan_asn1BOOLEAN.c new file mode 100644 index 0000000..e918bc6 --- /dev/null +++ b/scan_asn1BOOLEAN.c @@ -0,0 +1,12 @@ +#include "asn1.h" + +int scan_asn1BOOLEAN(const char* src,const char* max,unsigned long* l) { + int tmp; + long tag; + enum asn1_tagclass tc; + enum asn1_tagtype tt; + if ((tmp=scan_asn1int(src,max,&tc,&tt,&tag,l))) + if (tc==UNIVERSAL || tt==PRIMITIVE || tag==BOOLEAN) + return tmp; + return 0; +} diff --git a/scan_ldapsearchrequest.c b/scan_ldapsearchrequest.c new file mode 100644 index 0000000..93eb35d --- /dev/null +++ b/scan_ldapsearchrequest.c @@ -0,0 +1,25 @@ +#include "asn1.h" +#include "ldap.h" + +int scan_ldapsearchrequest(const char* src,const char* max, + struct SearchRequest* s) { + int res,tmp; + unsigned long etmp; + if (!(res=scan_ldapstring(src,max,s->LDAPDN))) goto error; + if (!(tmp=scan_asn1ENUMERATED(src+res,max,&etmp))) goto error; + if (etmp>2) goto error; s->scope=etmp; res+=tmp; + if (!(tmp=scan_asn1ENUMERATED(src+res,max,&etmp))) goto error; + if (etmp>3) goto error; s->derefAliases=etmp; res+=tmp; + if (!(tmp=scan_asn1INTEGER(src+res,max,&s->sizeLimit))) goto error; + res+=tmp; + if (!(tmp=scan_asn1INTEGER(src+res,max,&s->timeLimit))) goto error; + res+=tmp; + if (!(tmp=scan_asn1BOOLEAN(src+res,max,&s->timeLimit))) goto error; + res+=tmp; + if (!(tmp=scan_ldapsearchfilter(src+res,max,&s->filter))) goto error; + res+=tmp; + /* TODO: parse attributedescriptionlist */ + return res; +error: + return 0; +}