summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Gallagher <sgallagh@redhat.com>2012-05-25 10:09:20 -0400
committerStephen Gallagher <sgallagh@redhat.com>2012-05-25 13:30:52 -0400
commit8126906ab783494204dc853c814b0882d2a76523 (patch)
treed8fd922202f0db1e976a3e1f214c03b29bae5aca
parent188f9e1e646b0bed530913ca76bbcdf0f342cc66 (diff)
downloadsssd-8126906ab783494204dc853c814b0882d2a76523.tar.gz
sssd-8126906ab783494204dc853c814b0882d2a76523.tar.bz2
sssd-8126906ab783494204dc853c814b0882d2a76523.zip
NSS: Restore original protocol for getservbyport
When fixing an endianness bug, we changed the protocol unnecessarily.
-rw-r--r--src/responder/nss/nsssrv_services.c2
-rw-r--r--src/sss_client/nss_services.c5
2 files changed, 4 insertions, 3 deletions
diff --git a/src/responder/nss/nsssrv_services.c b/src/responder/nss/nsssrv_services.c
index db8a2ca1..2e539f13 100644
--- a/src/responder/nss/nsssrv_services.c
+++ b/src/responder/nss/nsssrv_services.c
@@ -1050,7 +1050,7 @@ errno_t parse_getservbyport(TALLOC_CTX *mem_ctx,
SAFEALIGN_COPY_UINT16(&c, body, NULL);
port = ntohs(c);
- port_and_padding_len = 2 * sizeof(uint16_t);
+ port_and_padding_len = 2 * sizeof(uint16_t) + sizeof(uint32_t);
i = port_and_padding_len;
j = 0;
diff --git a/src/sss_client/nss_services.c b/src/sss_client/nss_services.c
index 8f25781a..159583d7 100644
--- a/src/sss_client/nss_services.c
+++ b/src/sss_client/nss_services.c
@@ -54,8 +54,8 @@ static void sss_nss_getservent_data_clean(void) {
*
* GETSERVBYPORT Request:
* 0-3: 16-bit port number in network byte order
- * 4-7: Reserved/padding
- * 8-X: Zero-terminated string (protocol)
+ * 4-15: Reserved/padding
+ * 16-X: Zero-terminated string (protocol)
* Protocol may be zero-length to imply "any"
*
* Replies:
@@ -297,6 +297,7 @@ _nss_sss_getservbyport_r(int port, const char *protocol,
/* Padding */
SAFEALIGN_SET_UINT16(data + p, 0, &p);
+ SAFEALIGN_SET_UINT32(data + p, 0, &p);
if (protocol) {
memcpy(data + p, protocol, proto_len + 1);