1
0
mirror of https://github.com/samba-team/samba.git synced 2025-10-28 03:33:13 +03:00

r12699: 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
This commit is contained in:
Jelmer Vernooij
2006-01-03 19:39:53 +00:00
committed by Gerald (Jerry) Carter
parent 5e6df39363
commit 10da56fb6c
2 changed files with 31 additions and 2 deletions

View File

@@ -322,7 +322,35 @@ static int ejs_base64decode(MprVarHandle eid, int argc, struct MprVar **argv)
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 @@ static int ejs_ldb_init(MprVarHandle eid, int argc, struct MprVar **argv)
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);