| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 2eddd80 commit 18dd3f0
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,2 @@ | |||
| 1 | + Fix allocation error handling in the fallback implementation of | ||
| 2 | + ``getaddrinfo()``. | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -171,7 +171,10 @@ if (pai->ai_flags & AI_CANONNAME) {\ | |||
| 171 | 171 | char *p;\ | |
| 172 | 172 | if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) +\ | |
| 173 | 173 | ((gai_afd)->a_socklen)))\ | |
| 174 | - == NULL) goto free;\ | ||
| 174 | + == NULL) {\ | ||
| 175 | + error = EAI_MEMORY;\ | ||
| 176 | + goto free;\ | ||
| 177 | + }\ | ||
| 175 | 178 | memcpy(ai, pai, sizeof(struct addrinfo));\ | |
| 176 | 179 | (ai)->ai_addr = (struct sockaddr *)((ai) + 1);\ | |
| 177 | 180 | memset((ai)->ai_addr, 0, (gai_afd)->a_socklen);\ | |
@@ -186,7 +189,10 @@ if (pai->ai_flags & AI_CANONNAME) {\ | |||
| 186 | 189 | char *p;\ | |
| 187 | 190 | if (((ai) = (struct addrinfo *)malloc(sizeof(struct addrinfo) +\ | |
| 188 | 191 | ((gai_afd)->a_socklen)))\ | |
| 189 | - == NULL) goto free;\ | ||
| 192 | + == NULL) {\ | ||
| 193 | + error = EAI_MEMORY;\ | ||
| 194 | + goto free;\ | ||
| 195 | + }\ | ||
| 190 | 196 | memcpy(ai, pai, sizeof(struct addrinfo));\ | |
| 191 | 197 | (ai)->ai_addr = (struct sockaddr *)((ai) + 1);\ | |
| 192 | 198 | memset((ai)->ai_addr, 0, (gai_afd)->a_socklen);\ | |
@@ -413,8 +419,8 @@ getaddrinfo(const char*hostname, const char*servname, | |||
| 413 | 419 | */ | |
| 414 | 420 | } | |
| 415 | 421 | cur = cur->ai_next; | |
| 422 | + top = sentinel.ai_next; | ||
| 416 | 423 | } | |
| 417 | - top = sentinel.ai_next; | ||
| 418 | 424 | if (top) | |
| 419 | 425 | goto good; | |
| 420 | 426 | else | |
@@ -463,7 +469,10 @@ getaddrinfo(const char*hostname, const char*servname, | |||
| 463 | 469 | * translation function, and it looks strange | |
| 464 | 470 | * that we do addr->name translation here. | |
| 465 | 471 | */ | |
| 466 | - get_name(pton, &gai_afdl[i], &top, pton, pai, port); | ||
| 472 | + error = get_name(pton, &gai_afdl[i], &top, pton, pai, port); | ||
| 473 | + if (error != SUCCESS) { | ||
| 474 | + goto free; | ||
| 475 | + } | ||
| 467 | 476 | goto good; | |
| 468 | 477 | } else | |
| 469 | 478 | ERR(EAI_FAMILY); /*xxx*/ | |
| Back | FazBrowse Home | New Git URL |
0 commit comments