From dbcc7ad7e4efc550b6937647995e8d74fe538d35 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Mon, 22 Feb 2010 18:47:34 -0500 Subject: s4:netlogon fix segfault --- source4/rpc_server/netlogon/dcerpc_netlogon.c | 31 ++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'source4') diff --git a/source4/rpc_server/netlogon/dcerpc_netlogon.c b/source4/rpc_server/netlogon/dcerpc_netlogon.c index de741d5284..417035e8a2 100644 --- a/source4/rpc_server/netlogon/dcerpc_netlogon.c +++ b/source4/rpc_server/netlogon/dcerpc_netlogon.c @@ -1707,7 +1707,7 @@ static WERROR dcesrv_netr_DsrEnumerateDomainTrusts(struct dcesrv_call_state *dce const char * const dom_attrs[] = { "objectSid", "objectGUID", NULL }; struct loadparm_context *lp_ctx = dce_call->conn->dce_ctx->lp_ctx; const char *dnsdomain = lp_dnsdomain(lp_ctx); - char *p; + const char *p; WERROR werr; if (r->in.trust_flags & 0xFFFFFE00) { @@ -1715,18 +1715,25 @@ static WERROR dcesrv_netr_DsrEnumerateDomainTrusts(struct dcesrv_call_state *dce } /* TODO: turn to hard check once we are sure this is 100% correct */ - p = strchr(r->in.server_name, '.'); - if (!p) { + if (!r->in.server_name) { DEBUG(3, ("Invalid domain! Expected name in domain [%s]. " - "But received [%s]!\n", - dnsdomain, r->in.server_name)); - } - p++; - if (strcasecmp(p, dnsdomain)) { - DEBUG(3, ("Invalid domain! Expected name in domain [%s]. " - "But received [%s]!\n", - dnsdomain, r->in.server_name)); - } + "But received NULL!\n", dnsdomain)); + } else { + p = strchr(r->in.server_name, '.'); + if (!p) { + DEBUG(3, ("Invalid domain! Expected name in domain " + "[%s]. But received [%s]!\n", + dnsdomain, r->in.server_name)); + p = r->in.server_name; + } else { + p++; + } + if (strcasecmp(p, dnsdomain)) { + DEBUG(3, ("Invalid domain! Expected name in domain " + "[%s]. But received [%s]!\n", + dnsdomain, r->in.server_name)); + } + } ZERO_STRUCT(r->out); -- cgit