1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-08-02 04:22:45 +03:00

Revert "nss: prevent PROTECT_ERRNO from squashing changes to *errnop"

This reverts commit b26c904113.

I don't see anythign wrong, but Ubuntu autopkgtest CI started failing fairly
consistently since this was merged. Let's see if reverting fixes things.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2019-01-10 16:09:52 +01:00
parent 8e44f5710b
commit 0192cbdb2c
7 changed files with 44 additions and 133 deletions

View File

@ -186,7 +186,7 @@ enum nss_status _nss_resolve_gethostbyname4_r(
l = strlen(canonical);
ms = ALIGN(l+1) + ALIGN(sizeof(struct gaih_addrtuple)) * c;
if (buflen < ms) {
*errnop = DISARM_PROTECT_ERRNO(ERANGE);
*errnop = ERANGE;
*h_errnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
@ -267,7 +267,7 @@ enum nss_status _nss_resolve_gethostbyname4_r(
return NSS_STATUS_SUCCESS;
fail:
*errnop = DISARM_PROTECT_ERRNO(r);
*errnop = -r;
*h_errnop = NO_RECOVERY;
return ret;
@ -364,7 +364,7 @@ enum nss_status _nss_resolve_gethostbyname3_r(
ms = ALIGN(l+1) + c * ALIGN(alen) + (c+2) * sizeof(char*);
if (buflen < ms) {
*errnop = DISARM_PROTECT_ERRNO(ERANGE);
*errnop = ERANGE;
*h_errnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
@ -455,7 +455,7 @@ enum nss_status _nss_resolve_gethostbyname3_r(
return NSS_STATUS_SUCCESS;
fail:
*errnop = DISARM_PROTECT_ERRNO(r);
*errnop = -r;
*h_errnop = NO_RECOVERY;
return ret;
@ -492,13 +492,13 @@ enum nss_status _nss_resolve_gethostbyaddr2_r(
assert(h_errnop);
if (!IN_SET(af, AF_INET, AF_INET6)) {
*errnop = DISARM_PROTECT_ERRNO(EAFNOSUPPORT);
*errnop = EAFNOSUPPORT;
*h_errnop = NO_DATA;
return NSS_STATUS_UNAVAIL;
}
if (len != FAMILY_ADDRESS_SIZE(af)) {
*errnop = DISARM_PROTECT_ERRNO(EINVAL);
*errnop = EINVAL;
*h_errnop = NO_RECOVERY;
return NSS_STATUS_UNAVAIL;
}
@ -576,7 +576,7 @@ enum nss_status _nss_resolve_gethostbyaddr2_r(
c * sizeof(char*); /* pointers to aliases, plus trailing NULL */
if (buflen < ms) {
*errnop = DISARM_PROTECT_ERRNO(ERANGE);
*errnop = ERANGE;
*h_errnop = NETDB_INTERNAL;
return NSS_STATUS_TRYAGAIN;
}
@ -636,7 +636,7 @@ enum nss_status _nss_resolve_gethostbyaddr2_r(
return NSS_STATUS_SUCCESS;
fail:
*errnop = DISARM_PROTECT_ERRNO(r);
*errnop = -r;
*h_errnop = NO_RECOVERY;
return ret;