diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 01:23:53 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-06 01:23:53 +0000 |
commit | c000cad09d0b54c455c99271bfb996c2dfe13073 (patch) | |
tree | e47ca809ed512d7fb43ec3d555753b1b658e9819 /contrib/ldapc++/src/LDAPControl.cpp | |
parent | Initial commit. (diff) | |
download | openldap-c000cad09d0b54c455c99271bfb996c2dfe13073.tar.xz openldap-c000cad09d0b54c455c99271bfb996c2dfe13073.zip |
Adding upstream version 2.4.47+dfsg.upstream/2.4.47+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | contrib/ldapc++/src/LDAPControl.cpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/contrib/ldapc++/src/LDAPControl.cpp b/contrib/ldapc++/src/LDAPControl.cpp new file mode 100644 index 0000000..b6a0339 --- /dev/null +++ b/contrib/ldapc++/src/LDAPControl.cpp @@ -0,0 +1,94 @@ +// $OpenLDAP$ +/* + * Copyright 2000-2018 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ + + +#include "LDAPControl.h" +#include "debug.h" + +using namespace std; + +LDAPCtrl::LDAPCtrl(const char *oid, bool critical, const char* data, + int length){ + DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl); + DEBUG(LDAP_DEBUG_CONSTRUCT | LDAP_DEBUG_PARAMETER, + " oid:" << oid << endl << " critical:" << critical << endl); + m_oid = oid; + m_isCritical=critical; + if (data != 0 && length !=0){ + m_data.assign(data,length); + m_noData=false; + }else{ + m_data=string(); + m_noData=true; + } +} + +LDAPCtrl::LDAPCtrl(const string& oid, bool critical, const string& data){ + DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl); + DEBUG(LDAP_DEBUG_CONSTRUCT | LDAP_DEBUG_PARAMETER, + " oid:" << oid << endl << " critical:" << critical << endl); + m_oid=oid; + m_isCritical=critical; + m_data=data; + m_noData=false; +} + +LDAPCtrl::LDAPCtrl(const LDAPControl* ctrl){ + DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPCtrl::LDAPCtrl()" << endl); + m_oid = string(ctrl->ldctl_oid); + m_isCritical = ctrl->ldctl_iscritical ? true : false; + m_data = string(ctrl->ldctl_value.bv_val, ctrl->ldctl_value.bv_len ); + m_noData = ctrl->ldctl_value.bv_len ? false : true; +} + +LDAPCtrl::~LDAPCtrl(){ + DEBUG(LDAP_DEBUG_DESTROY,"LDAPCtrl::~LDAPCtrl" << endl); +} + +string LDAPCtrl::getOID() const{ + DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getOID()" << endl); + return m_oid; +} + +bool LDAPCtrl::isCritical()const { + DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::isCritical()" << endl); + return m_isCritical; +} + +bool LDAPCtrl::hasData() const{ + return !m_noData; +} + +string LDAPCtrl::getData() const { + DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getData()" << endl); + return m_data; +} + +LDAPControl* LDAPCtrl::getControlStruct() const { + DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::getControlStruct()" << endl); + LDAPControl* ret = new LDAPControl; + ret->ldctl_oid= new char[m_oid.size() + 1]; + m_oid.copy(ret->ldctl_oid,string::npos); + ret->ldctl_oid[m_oid.size()]=0; + if ( m_noData ) { + ret->ldctl_value.bv_len = 0; + ret->ldctl_value.bv_val = NULL; + } else { + ret->ldctl_value.bv_len=m_data.size(); + ret->ldctl_value.bv_val= new char[m_data.size()]; + m_data.copy(ret->ldctl_value.bv_val,string::npos); + } + ret->ldctl_iscritical = ( m_isCritical ? 1:0); + return ret; +} + +void LDAPCtrl::freeLDAPControlStruct(LDAPControl *ctrl){ + DEBUG(LDAP_DEBUG_TRACE,"LDAPCtrl::freeControlStruct()" << endl); + delete[] ctrl->ldctl_oid; + delete[] ctrl->ldctl_value.bv_val; + delete ctrl; +} + |