From 0415c10ef65d4e244acd6fca4610639ca2d9c2f3 Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Wed, 6 Jun 2018 19:47:43 +0100 Subject: [PATCH] noip.c (get{sock,peer}name): Don't clobber `errno'. We might return a failure here, if the underlying syscall fails, and should propagate the `errno' it returned. Also hoist out some block-scope variables now that their enclosing block has vanished. --- noip.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/noip.c b/noip.c index bbd0ebd..4edae54 100644 --- a/noip.c +++ b/noip.c @@ -1690,40 +1690,36 @@ int accept(int sk, struct sockaddr *sa, socklen_t *len) int getsockname(int sk, struct sockaddr *sa, socklen_t *len) { + char sabuf[1024]; + socklen_t mylen = sizeof(sabuf); int rc; Dpid; D( fprintf(stderr, "noip(%d): GETSOCKNAME sk=%d", pid, sk); ) - PRESERVING_ERRNO({ - char sabuf[1024]; - socklen_t mylen = sizeof(sabuf); - rc = real_getsockname(sk, SA(sabuf), &mylen); - if (rc >= 0) { - D( fprintf(stderr, " -> converting...\n"); ) - return_fake_name(SA(sabuf), mylen, sa, len); - D( fprintf(stderr, "noip(%d): ... GETSOCKNAME", pid); ) - } - }); + rc = real_getsockname(sk, SA(sabuf), &mylen); + if (rc >= 0) { + D( fprintf(stderr, " -> converting...\n"); ) + return_fake_name(SA(sabuf), mylen, sa, len); + D( fprintf(stderr, "noip(%d): ... GETSOCKNAME", pid); ) + } D( dump_addrresult(rc, sa, *len); ) return (rc); } int getpeername(int sk, struct sockaddr *sa, socklen_t *len) { + char sabuf[1024]; + socklen_t mylen = sizeof(sabuf); int rc; Dpid; D( fprintf(stderr, "noip(%d): GETPEERNAME sk=%d", pid, sk); ) - PRESERVING_ERRNO({ - char sabuf[1024]; - socklen_t mylen = sizeof(sabuf); - rc = real_getpeername(sk, SA(sabuf), &mylen); - if (rc >= 0) { - D( fprintf(stderr, " -> converting...\n"); ) - return_fake_name(SA(sabuf), mylen, sa, len); - D( fprintf(stderr, "noip(%d): ... GETPEERNAME", pid); ) - } - }); + rc = real_getpeername(sk, SA(sabuf), &mylen); + if (rc >= 0) { + D( fprintf(stderr, " -> converting...\n"); ) + return_fake_name(SA(sabuf), mylen, sa, len); + D( fprintf(stderr, "noip(%d): ... GETPEERNAME", pid); ) + } D( dump_addrresult(rc, sa, *len); ) return (0); } -- 2.11.0