diff options
author | Sumit Bose <sbose@redhat.com> | 2015-01-29 20:31:19 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-01-30 15:59:16 +0100 |
commit | d5c7e81dac95073613c8f8b12280ed001d4ed3b1 (patch) | |
tree | aa3be6ae2097b3a74aa78387bab176b547589f2c | |
parent | 4517ac5121054f0f14dbcb977f0844d49817f4b8 (diff) | |
download | sssd-d5c7e81dac95073613c8f8b12280ed001d4ed3b1.tar.gz sssd-d5c7e81dac95073613c8f8b12280ed001d4ed3b1.tar.xz sssd-d5c7e81dac95073613c8f8b12280ed001d4ed3b1.zip |
fill_id() fix LE/BE issue with wrong data type
Related to https://fedorahosted.org/sssd/ticket/1588
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
(cherry picked from commit 866ab45027c83fafb7f7f45d34d3e1e7721b77dc)
-rw-r--r-- | src/responder/nss/nsssrv_cmd.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index da24ce173..c03e5db84 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -4867,18 +4867,20 @@ static errno_t fill_id(struct sss_packet *packet, uint8_t *body; size_t blen; size_t pctr = 0; - uint64_t id; + uint64_t tmp_id; + uint32_t id; if (id_type == SSS_ID_TYPE_GID) { - id = ldb_msg_find_attr_as_uint64(msg, SYSDB_GIDNUM, 0); + tmp_id = ldb_msg_find_attr_as_uint64(msg, SYSDB_GIDNUM, 0); } else { - id = ldb_msg_find_attr_as_uint64(msg, SYSDB_UIDNUM, 0); + tmp_id = ldb_msg_find_attr_as_uint64(msg, SYSDB_UIDNUM, 0); } - if (id == 0 || id >= UINT32_MAX) { + if (tmp_id == 0 || tmp_id >= UINT32_MAX) { DEBUG(SSSDBG_CRIT_FAILURE, "Invalid POSIX ID.\n"); return EINVAL; } + id = (uint32_t) tmp_id; ret = sss_packet_grow(packet, 4 * sizeof(uint32_t)); if (ret != EOK) { |