diff options
author | Simo Sorce <idra@samba.org> | 2010-02-22 18:47:34 -0500 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2010-02-22 18:48:36 -0500 |
commit | dbcc7ad7e4efc550b6937647995e8d74fe538d35 (patch) | |
tree | 413787c534ca234ba5ca585d4f43f073796880df /source4/rpc_server | |
parent | 6c0cd488e5998b058ce472cfb0f41f11dc19327b (diff) | |
download | samba-dbcc7ad7e4efc550b6937647995e8d74fe538d35.tar.gz samba-dbcc7ad7e4efc550b6937647995e8d74fe538d35.tar.bz2 samba-dbcc7ad7e4efc550b6937647995e8d74fe538d35.zip |
s4:netlogon fix segfault
Diffstat (limited to 'source4/rpc_server')
-rw-r--r-- | source4/rpc_server/netlogon/dcerpc_netlogon.c | 31 |
1 files changed, 19 insertions, 12 deletions
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); |