summaryrefslogtreecommitdiffstats
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:49 -0400
commit43a813546f79a1c106643ecfa168b776a3083486 (patch)
tree78c26fdd806d0e4fc1a8d57e8d7668991773635a
parentd4b5df1fe20e1deccfe747ee8f2008582e5c4566 (diff)
downloadsssd-43a813546f79a1c106643ecfa168b776a3083486.tar.gz
sssd-43a813546f79a1c106643ecfa168b776a3083486.tar.xz
sssd-43a813546f79a1c106643ecfa168b776a3083486.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 8280b837a..cf2a449b2 100644
--- a/src/responder/nss/nsssrv_services.c
+++ b/src/responder/nss/nsssrv_services.c
@@ -1051,7 +1051,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 8f25781a1..159583d74 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);