8000 `Modules/getaddrinfo.c`: protect macros expansion via `do { ... } whi… · python/cpython@e32c48a · GitHub
[go: up one dir, main page]

Skip to content

Commit e32c48a

Browse files
committed
Modules/getaddrinfo.c: protect macros expansion via do { ... } while (0) constructions
1 parent 1b65e98 commit e32c48a

File tree

1 file changed

+30
-28
lines changed

1 file changed

+30
-28
lines changed

Modules/getaddrinfo.c

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -167,35 +167,37 @@ if (pai->ai_flags & AI_CANONNAME) {\
167167
}
168168

169169
#ifdef HAVE_SOCKADDR_SA_LEN
170-
#define GET_AI(ai, gai_afd, addr, port) {\
171-
char *p;\
172-
if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) +\
173-
((gai_afd)->a_socklen)))\
174-
== NULL) goto free;\
175-
memcpy(ai, pai, sizeof(struct addrinfo));\
176-
(ai)->ai_addr = (struct sockaddr *)((ai) + 1);\
177-
memset((ai)->ai_addr, 0, (gai_afd)->a_socklen);\
178-
(ai)->ai_addr->sa_len = (ai)->ai_addrlen = (gai_afd)->a_socklen;\
179-
(ai)->ai_addr->sa_family = (ai)->ai_family = (gai_afd)->a_af;\
180-
((struct sockinet *)(ai)->ai_addr)->si_port = port;\
181-
p = (char *)((ai)->ai_addr);\
182-
memcpy(p + (gai_afd)->a_off, (addr), (gai_afd)->a_addrlen);\
183-
}
170+
#define GET_AI(ai, gai_afd, addr, port) \
171+
do { \
172+
char *p; \
173+
if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) + \
174+
((gai_afd)->a_socklen))) \
175+
== NULL) goto free; \
176+
memcpy(ai, pai, sizeof(struct addrinfo)); \
177+
(ai)->ai_addr = (struct sockaddr *)((ai) + 1); \
178+
memset((ai)->ai_addr, 0, (gai_afd)->a_socklen); \
179+
(ai)->ai_addr->sa_len = (ai)->ai_addrlen = (gai_afd)->a_socklen; \
180+
(ai)->ai_addr->sa_family = (ai)->ai_family = (gai_afd)->a_af; \
181+
((struct sockinet *)(ai)->ai_addr)->si_port = port; \
182+
p = (char *)((ai)->ai_addr); \
183+
memcpy(p + (gai_afd)->a_off, (addr), (gai_afd)->a_addrlen); \
184+
} while (0)
184185
#else
185-
#define GET_AI(ai, gai_afd, addr, port) {\
186-
char *p;\
187-
if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) +\
188-
((gai_afd)->a_socklen)))\
189-
== NULL) goto free;\
190-
memcpy(ai, pai, sizeof(struct addrinfo));\
191-
(ai)->ai_addr = (struct sockaddr *)((ai) + 1);\
192-
memset((ai)->ai_addr, 0, (gai_afd)->a_socklen);\
193-
(ai)->ai_addrlen = (gai_afd)->a_socklen;\
194-
(ai)->ai_addr->sa_family = (ai)->ai_family = (gai_afd)->a_af;\
195-
((struct sockinet *)(ai)->ai_addr)->si_port = port;\
196-
p = (char *)((ai)->ai_addr);\
197-
memcpy(p + (gai_afd)->a_off, (addr), (gai_afd)->a_addrlen);\
198-
}
186+
#define GET_AI(ai, gai_afd, addr, port) \
187+
do { \
188+
char *p; \
189+
if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) + \
190+
((gai_afd)->a_socklen))) \
191+
== NULL) goto free; \
192+
memcpy(ai, pai, sizeof(struct addrinfo)); \
193+
(ai)->ai_addr = (struct sockaddr *)((ai) + 1); \
194+
memset((ai)->ai_addr, 0, (gai_afd)->a_socklen); \
195+
(ai)->ai_addrlen = (gai_afd)->a_socklen; \
196+
(ai)->ai_addr->sa_family = (ai)->ai_family = (gai_afd)->a_af; \
197+
((struct sockinet *)(ai)->ai_addr)->si_port = port; \
198+
p = (char *)((ai)->ai_addr); \
199+
memcpy(p + (gai_afd)->a_off, (addr), (gai_afd)->a_addrlen); \
200+
} while (0)
199201
#endif
200202

201203
#define ERR(err) { error = (err); goto bad; }

0 commit comments

Comments
 (0)
0