s3:lib/addrchange: look at the correct nl_pid in addrchange_done()
authorStefan Metzmacher <metze@samba.org>
Fri, 5 Jun 2015 12:19:00 +0000 (14:19 +0200)
committerKarolin Seeger <kseeger@samba.org>
Tue, 30 Jun 2015 02:19:07 +0000 (04:19 +0200)
state->fromaddr is the address we got from recvfrom_send/recv.

state->addr is completely untouched after tevent_req_create().

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11316

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
(cherry picked from commit 257bc586c22f9a7f34b913823d5c89592d433454)

source3/lib/addrchange.c

index a5d204195352b6a986127a13a87117a1d5d08433..b85a81f12e0c8dee81d0862588a06651f0e7b35c 100644 (file)
@@ -126,7 +126,7 @@ static void addrchange_done(struct tevent_req *subreq)
                subreq, struct tevent_req);
        struct addrchange_state *state = tevent_req_data(
                req, struct addrchange_state);
-       struct sockaddr_nl *addr;
+       struct sockaddr_nl *fromaddr;
        struct nlmsghdr *h;
        struct ifaddrmsg *ifa;
        struct rtattr *rta;
@@ -148,10 +148,10 @@ static void addrchange_done(struct tevent_req *subreq)
                goto retry;
        }
 
-       addr = (struct sockaddr_nl *)(void *)&state->addr;
-       if (addr->nl_pid != 0) {
+       fromaddr = (struct sockaddr_nl *)(void *)&state->fromaddr;
+       if (fromaddr->nl_pid != 0) {
                DEBUG(10, ("Got msg from pid %d, not from the kernel\n",
-                          (int)addr->nl_pid));
+                          (int)fromaddr->nl_pid));
                goto retry;
        }