70 lines
2.3 KiB
Diff
70 lines
2.3 KiB
Diff
From 188f9e1e646b0bed530913ca76bbcdf0f342cc66 Mon Sep 17 00:00:00 2001
|
|
From: Jakub Hrozek <jhrozek@redhat.com>
|
|
Date: Fri, 25 May 2012 13:52:32 +0200
|
|
Subject: [PATCH 20/21] Send 16bit protocol numbers from the sss_client
|
|
|
|
https://fedorahosted.org/sssd/ticket/1348
|
|
---
|
|
src/responder/nss/nsssrv_services.c | 2 +-
|
|
src/sss_client/nss_services.c | 13 +++++++------
|
|
2 files changed, 8 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/src/responder/nss/nsssrv_services.c b/src/responder/nss/nsssrv_services.c
|
|
index 2e539f13576d18c97d8c3bff2ced2fd5ed01290f..db8a2ca132b4f47c4d6cd78ce99280486e22f2a0 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) + sizeof(uint32_t);
|
|
+ port_and_padding_len = 2 * sizeof(uint16_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 3f042b4a2a62dbf56b5295e84af8d0371708453a..8f25781a1ec188931157368a2e38067be23c0c00 100644
|
|
--- a/src/sss_client/nss_services.c
|
|
+++ b/src/sss_client/nss_services.c
|
|
@@ -270,6 +270,7 @@ _nss_sss_getservbyport_r(int port, const char *protocol,
|
|
size_t proto_len = 0;
|
|
uint8_t *repbuf;
|
|
uint8_t *data;
|
|
+ size_t p = 0;
|
|
size_t replen, len;
|
|
enum nss_status nret;
|
|
int ret;
|
|
@@ -285,23 +286,23 @@ _nss_sss_getservbyport_r(int port, const char *protocol,
|
|
}
|
|
}
|
|
|
|
- rd.len = sizeof(uint32_t)*2 + proto_len + 1;
|
|
- data = malloc(sizeof(char)*rd.len);
|
|
+ rd.len = sizeof(uint16_t)*2 + proto_len + 1;
|
|
+ data = malloc(sizeof(uint8_t)*rd.len);
|
|
if (data == NULL) {
|
|
nret = NSS_STATUS_TRYAGAIN;
|
|
goto out;
|
|
}
|
|
|
|
- SAFEALIGN_SET_UINT32(data, port, NULL);
|
|
+ SAFEALIGN_SET_UINT16(data, port, &p);
|
|
|
|
/* Padding */
|
|
- memset(data + sizeof(uint32_t), 0, 4);
|
|
+ SAFEALIGN_SET_UINT16(data + p, 0, &p);
|
|
|
|
if (protocol) {
|
|
- memcpy(data + sizeof(uint32_t)*2, protocol, proto_len + 1);
|
|
+ memcpy(data + p, protocol, proto_len + 1);
|
|
} else {
|
|
/* No protocol specified, pass empty string */
|
|
- data[sizeof(uint32_t)*2] = '\0';
|
|
+ data[p] = '\0';
|
|
}
|
|
rd.data = data;
|
|
|
|
--
|
|
1.7.10.2
|
|
|