From a5da0a72e1f1e026690df4b149a63754f29e6c28 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 14 Jun 2006 00:37:52 +0000 Subject: r16213: Fix Klocwork #852. iface_n_ip can potentially return NULL. Ensure we don't deref. Jeremy. (This used to be commit c2f0ea2ff2f6ad925cee9c85110c6ad828ffb7a9) --- source3/nmbd/nmbd_become_dmb.c | 10 +++++++++- source3/nmbd/nmbd_subnetdb.c | 8 +++++++- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'source3/nmbd') diff --git a/source3/nmbd/nmbd_become_dmb.c b/source3/nmbd/nmbd_become_dmb.c index fb1fb33a81..523ec6cabf 100644 --- a/source3/nmbd/nmbd_become_dmb.c +++ b/source3/nmbd/nmbd_become_dmb.c @@ -120,6 +120,7 @@ in workgroup %s on subnet %s\n", if( subrec == unicast_subnet ) { struct nmb_name nmbname; struct in_addr my_first_ip; + struct in_addr *nip; /* Put our name and first IP address into the workgroup struct as domain master browser. This @@ -130,7 +131,14 @@ in workgroup %s on subnet %s\n", work->dmb_name = nmbname; /* Pick the first interface ip address as the domain master browser ip. */ - my_first_ip = *iface_n_ip(0); + nip = iface_n_ip(0); + + if (!nip) { + DEBUG(0,("become_domain_master_stage2: Error. iface_n_ip returned NULL\n")); + return; + } + + my_first_ip = *nip; putip((char *)&work->dmb_addr, &my_first_ip); diff --git a/source3/nmbd/nmbd_subnetdb.c b/source3/nmbd/nmbd_subnetdb.c index c3640028d2..5a93d8bec0 100644 --- a/source3/nmbd/nmbd_subnetdb.c +++ b/source3/nmbd/nmbd_subnetdb.c @@ -220,7 +220,13 @@ BOOL create_subnets(void) if (lp_we_are_a_wins_server()) { /* Pick the first interface ip address as the WINS server ip. */ - unicast_ip = *iface_n_ip(0); + struct in_addr *nip = iface_n_ip(0); + + if (!nip) { + return False; + } + + unicast_ip = *nip; } else { /* note that we do not set the wins server IP here. We just set it at zero and let the wins registration code cope -- cgit