svn commit: samba r12699 - in branches/SAMBA_4_0/source/scripting: ejs libjs

jelmer at samba.org jelmer at samba.org
Tue Jan 3 19:39:53 GMT 2006


Author: jelmer
Date: 2006-01-03 19:39:53 +0000 (Tue, 03 Jan 2006)
New Revision: 12699

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12699

Log:
correctly escape invalid DN characters (reported by Steinar H. Gunderson).
this still doesn't work as a bug in ldb causes it to not understand 
escaped characters in DNs when parsing DNs

Modified:
   branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c
   branches/SAMBA_4_0/source/scripting/libjs/upgrade.js


Changeset:
Modified: branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c	2006-01-03 18:35:00 UTC (rev 12698)
+++ branches/SAMBA_4_0/source/scripting/ejs/smbcalls_ldb.c	2006-01-03 19:39:53 UTC (rev 12699)
@@ -322,8 +322,36 @@
 
 	return 0;
 }
-  
 
+/* 
+   escape a DN
+   usage:
+     dataout = ldb.dn_escape(datain)
+ */
+static int ejs_dn_escape(MprVarHandle eid, int argc, struct MprVar **argv)
+{
+	char *ret;
+	struct ldb_val val;
+	
+	if (argc != 1) {
+		ejsSetErrorMsg(eid, "ldb.dn_escape invalid argument count");
+		return -1;
+	}
+
+	val.data = mprToString(argv[0]);
+	val.length = strlen((const char *)val.data);
+
+	ret = ldb_dn_escape_value(mprMemCtx(), val);
+	if (ret == NULL) {
+		mpr_Return(eid, mprCreateUndefinedVar());
+	} else {
+		mpr_Return(eid, mprString(ret));
+		talloc_free(ret);
+	}
+
+	return 0;
+}
+
 /*
   perform an ldb add 
 
@@ -511,6 +539,7 @@
 	mprSetCFunction(ldb, "errstring", ejs_ldbErrstring);
 	mprSetCFunction(ldb, "encode", ejs_base64encode);
 	mprSetCFunction(ldb, "decode", ejs_base64decode);
+	mprSetCFunction(ldb, "dn_escape", ejs_dn_escape);
 	mprSetCFunction(ldb, "close", ejs_ldbClose);
 	mprSetCFunction(ldb, "transaction_start", ejs_ldbTransactionStart);
 	mprSetCFunction(ldb, "transaction_cancel", ejs_ldbTransactionCancel);

Modified: branches/SAMBA_4_0/source/scripting/libjs/upgrade.js
===================================================================
--- branches/SAMBA_4_0/source/scripting/libjs/upgrade.js	2006-01-03 18:35:00 UTC (rev 12698)
+++ branches/SAMBA_4_0/source/scripting/libjs/upgrade.js	2006-01-03 19:39:53 UTC (rev 12699)
@@ -151,7 +151,7 @@
 lmPwdHash:: %s
 ntPwdHash:: %s
 
-", acc.fullname, domaindn, acc.logon_time, acc.logoff_time, acc.username, acc.nt_username, acc.nt_username, 
+", ldb.dn_escape(acc.fullname), domaindn, acc.logon_time, acc.logoff_time, acc.username, acc.nt_username, acc.nt_username, 
 
 acc.fullname, acc.acct_desc, acc.group_rid, acc.bad_password_count, acc.logon_count,
 acc.domain, acc.dir_drive, acc.munged_dial, acc.homedir, acc.logon_script, 



More information about the samba-cvs mailing list