diff options
Diffstat (limited to 'source4/rpc_server')
-rw-r--r-- | source4/rpc_server/config.mk | 1 | ||||
-rw-r--r-- | source4/rpc_server/dcom/rodb.c | 39 | ||||
-rw-r--r-- | source4/rpc_server/dcom/rot.c | 15 |
3 files changed, 54 insertions, 1 deletions
diff --git a/source4/rpc_server/config.mk b/source4/rpc_server/config.mk index 58f842add0..466d86a0c4 100644 --- a/source4/rpc_server/config.mk +++ b/source4/rpc_server/config.mk @@ -19,6 +19,7 @@ SUBSYSTEM = DCERPC INIT_OBJ_FILES = \ rpc_server/dcom/oxidresolver.o \ rpc_server/dcom/rot.o \ + rpc_server/dcom/rodb.o \ rpc_server/dcom/remact.o \ librpc/gen_ndr/ndr_dcom_d.o REQUIRED_SUBSYSTEMS = \ diff --git a/source4/rpc_server/dcom/rodb.c b/source4/rpc_server/dcom/rodb.c new file mode 100644 index 0000000000..56d51c7934 --- /dev/null +++ b/source4/rpc_server/dcom/rodb.c @@ -0,0 +1,39 @@ +/* + Unix SMB/CIFS implementation. + + Running objects database + + Copyright (C) Jelmer Vernooij 2004 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "includes.h" +#include "rpc_server/dcerpc_server.h" +#include "librpc/gen_ndr/ndr_rot.h" +#include "rpc_server/common/common.h" + +struct tdb_wrap *openrodb(TALLOC_CTX *mem_ctx) +{ + struct tdb_wrap *wrap; + char *rodb_name = NULL; + + asprintf(&rodb_name, "%s/rot.tdb", lp_lockdir()); + wrap = tdb_wrap_open(mem_ctx, rodb_name, 0, 0, O_RDWR|O_CREAT, 0600); + SAFE_FREE(rodb_name); + + return wrap; +} + diff --git a/source4/rpc_server/dcom/rot.c b/source4/rpc_server/dcom/rot.c index 1a58833204..04fb7c73a5 100644 --- a/source4/rpc_server/dcom/rot.c +++ b/source4/rpc_server/dcom/rot.c @@ -25,14 +25,15 @@ #include "librpc/gen_ndr/ndr_rot.h" #include "rpc_server/common/common.h" - /* rot_add */ static WERROR rot_add(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_add *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -42,7 +43,9 @@ static WERROR rot_add(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, static WERROR rot_remove(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_remove *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -52,7 +55,9 @@ static WERROR rot_remove(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx static WERROR rot_is_listed(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_is_listed *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -62,7 +67,9 @@ static WERROR rot_is_listed(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ static WERROR rot_get_interface_pointer(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_get_interface_pointer *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -72,7 +79,9 @@ static WERROR rot_get_interface_pointer(struct dcesrv_call_state *dce_call, TALL static WERROR rot_set_modification_time(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_set_modification_time *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -82,7 +91,9 @@ static WERROR rot_set_modification_time(struct dcesrv_call_state *dce_call, TALL static WERROR rot_get_modification_time(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_get_modification_time *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } @@ -92,7 +103,9 @@ static WERROR rot_get_modification_time(struct dcesrv_call_state *dce_call, TALL static WERROR rot_enum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct rot_enum *r) { + struct tdb_wrap *db = openrodb(mem_ctx); DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR); + talloc_destroy(db); } |