/**
* Is a named pipe known?
* @param[in] pipename Just the filename
- * @result Do we want to serve this?
+ * @result NT error code
*/
-bool is_known_pipename(const char *pipename, struct ndr_syntax_id *syntax)
+NTSTATUS is_known_pipename(const char *pipename, struct ndr_syntax_id *syntax)
{
NTSTATUS status;
if (strchr(pipename, '/')) {
- DEBUG(1, ("Refusing open on pipe %s\n", pipename));
- return false;
+ DBG_WARNING("Refusing open on pipe %s\n", pipename);
+ return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
if (lp_disable_spoolss() && strequal(pipename, "spoolss")) {
- DEBUG(10, ("refusing spoolss access\n"));
- return false;
+ DBG_DEBUG("refusing spoolss access\n");
+ return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
if (rpc_srv_get_pipe_interface_by_cli_name(pipename, syntax)) {
- return true;
+ return NT_STATUS_OK;
}
status = smb_probe_module("rpc", pipename);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("is_known_pipename: %s unknown\n", pipename));
- return false;
+ DBG_DEBUG("Unknown pipe '%s'\n", pipename);
+ return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
- DEBUG(10, ("is_known_pipename: %s loaded dynamically\n", pipename));
+ DBG_DEBUG("'%s' loaded dynamically\n", pipename);
/*
* Scan the list again for the interface id
*/
if (rpc_srv_get_pipe_interface_by_cli_name(pipename, syntax)) {
- return true;
+ return NT_STATUS_OK;
}
- DEBUG(10, ("is_known_pipename: pipe %s did not register itself!\n",
- pipename));
+ DBG_DEBUG("pipe %s did not register itself!\n", pipename);
- return false;
+ return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
/*******************************************************************
bool create_next_pdu(struct pipes_struct *p);
bool api_pipe_bind_auth3(struct pipes_struct *p, struct ncacn_packet *pkt);
bool setup_fault_pdu(struct pipes_struct *p, NTSTATUS status);
-bool is_known_pipename(const char *cli_filename, struct ndr_syntax_id *syntax);
+NTSTATUS is_known_pipename(const char *cli_filename,
+ struct ndr_syntax_id *syntax);
#endif /* _RPC_SERVER_SRV_PIPE_H_ */
struct ndr_syntax_id syntax;
struct npa_state *npa = NULL;
NTSTATUS status;
- bool ok;
proxy_list = lp_parm_string_list(-1, "np", "proxy", NULL);
break;
case RPC_SERVICE_MODE_EMBEDDED:
/* Check if we handle this pipe internally */
- ok = is_known_pipename(name, &syntax);
- if (!ok) {
- DEBUG(2, ("'%s' is not a registered pipe!\n", name));
+ status = is_known_pipename(name, &syntax);
+ if (!NT_STATUS_IS_OK(status)) {
+ DBG_WARNING("'%s' is not a registered pipe!\n", name);
talloc_free(handle);
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
static void test_is_known_pipename(void **state)
{
struct ndr_syntax_id syntax_id = ndr_table_samr.syntax_id;
- bool is_pipename_ok;
+ NTSTATUS status;
- is_pipename_ok = is_known_pipename("samr", &syntax_id);
- assert_true(is_pipename_ok);
+ status = is_known_pipename("samr", &syntax_id);
+ assert_true(NT_STATUS_IS_OK(status));
}
static void test_is_known_pipename_slash(void **state)
{
struct ndr_syntax_id syntax_id = ndr_table_samr.syntax_id;
- bool is_pipename_ok;
char dummy_module_path[4096] = {0};
const char *module_env;
+ NTSTATUS status;
snprintf(dummy_module_path,
sizeof(dummy_module_path),
"%s/bin/modules/rpc/test_dummy_module.so",
SRCDIR);
- is_pipename_ok = is_known_pipename(dummy_module_path, &syntax_id);
- assert_false(is_pipename_ok);
+ status = is_known_pipename(dummy_module_path, &syntax_id);
+ assert_true(NT_STATUS_IS_ERR(status));
module_env = getenv("UNITTEST_DUMMY_MODULE_LOADED");
assert_null(module_env);