svn commit: samba r2508 - in branches/SAMBA_4_0/source/libcli/ldap: .

metze at samba.org metze at samba.org
Wed Sep 22 10:42:58 GMT 2004


Author: metze
Date: 2004-09-22 10:42:58 +0000 (Wed, 22 Sep 2004)
New Revision: 2508

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/libcli/ldap&rev=2508&nolog=1

Log:
- implemented ldap_decode() for UnbindRequest and ExtendedRequest
- fail when we got a wrong tag in ldap_decode()

metze

Modified:
   branches/SAMBA_4_0/source/libcli/ldap/ldap.c


Changeset:
Modified: branches/SAMBA_4_0/source/libcli/ldap/ldap.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/ldap/ldap.c	2004-09-22 10:42:09 UTC (rev 2507)
+++ branches/SAMBA_4_0/source/libcli/ldap/ldap.c	2004-09-22 10:42:58 UTC (rev 2508)
@@ -879,8 +879,10 @@
 		break;
 	}
 
-	case ASN1_APPLICATION(LDAP_TAG_UnbindRequest): {
+	case ASN1_APPLICATION_SIMPLE(LDAP_TAG_UnbindRequest): {
 		msg->type = LDAP_TAG_UnbindRequest;
+		asn1_start_tag(data, ASN1_APPLICATION_SIMPLE(LDAP_TAG_UnbindRequest));
+		asn1_end_tag(data);
 		break;
 	}
 
@@ -1087,8 +1089,29 @@
 	}
 
 	case ASN1_APPLICATION(LDAP_TAG_ExtendedRequest): {
-/*		struct ldap_ExtendedRequest *r = &msg->r.ExtendedRequest; */
+		struct ldap_ExtendedRequest *r = &msg->r.ExtendedRequest;
+		DATA_BLOB tmp_blob = data_blob(NULL, 0);
+
 		msg->type = LDAP_TAG_ExtendedRequest;
+		asn1_start_tag(data,ASN1_APPLICATION(LDAP_TAG_ExtendedRequest));
+		if (!asn1_read_ContextSimple(data, 0, &tmp_blob)) {
+			return False;
+		}
+		r->oid = blob2string_talloc(msg->mem_ctx, tmp_blob);
+		data_blob_free(&tmp_blob);
+		if (!r->oid) {
+			return False;
+		}
+
+		if (asn1_peek_tag(data, ASN1_CONTEXT_SIMPLE(1))) {
+			asn1_read_ContextSimple(data, 1, &tmp_blob);
+			r->value = data_blob_talloc(msg->mem_ctx, tmp_blob.data, tmp_blob.length);
+			data_blob_free(&tmp_blob);
+		} else {
+			r->value = data_blob(NULL, 0);
+		}
+
+		asn1_end_tag(data);
 		break;
 	}
 
@@ -1105,7 +1128,8 @@
 		r->value.length = 0;
 		break;
 	}
-
+	default: 
+		return False;
 	}
 
 	asn1_end_tag(data);



More information about the samba-cvs mailing list