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:
committed by
Gerald (Jerry) Carter
parent
5e6df39363
commit
10da56fb6c
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user