Bug 1463692
| Summary: | glibc: Incorrect pointer alignment in NSS group merge result construction | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Florian Weimer <fweimer> | |
| Component: | glibc | Assignee: | DJ Delorie <dj> | |
| Status: | CLOSED ERRATA | QA Contact: | Sergey Kolosov <skolosov> | |
| Severity: | unspecified | Docs Contact: | ||
| Priority: | unspecified | |||
| Version: | 7.5 | CC: | ashankar, codonell, dj, fweimer, mcermak, mnewsome, pfrankli, skolosov | |
| Target Milestone: | rc | |||
| Target Release: | --- | |||
| Hardware: | Unspecified | |||
| OS: | Unspecified | |||
| Whiteboard: | ||||
| Fixed In Version: | glibc-2.17-197.el7 | Doc Type: | Bug Fix | |
| Doc Text: |
Cause: Users with [SUCCESS=MERGE] in /etc/nsswitch.conf may see incorrectly merged group query results. On some platforms (s390x and powerpc64), it may (rarely) crash.
Fix: glibc has been fixed to correctly merge group records.
Result: Queries to merged group databases should return correctly merged records.
|
Story Points: | --- | |
| Clone Of: | ||||
| : | 1471985 (view as bug list) | Environment: | ||
| Last Closed: | 2018-04-10 14:00:52 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
| Bug Depends On: | 1471985 | |||
| Bug Blocks: | 1473718 | |||
|
Description
Florian Weimer
2017-06-21 14:02:55 UTC
Correct, gr_mem is not sufficiently aligned at the start. On pcc64 any * must be doubleword aligned (8 bytes). On s390 any * must be word aligned (4 bytes). These are just natural alignment rules. Absolutely needs to be fixed and is already fixed in upstream master:
commit f8cef4d07d9641e27629bd3ce2d13f5d702fb251
Author: DJ Delorie <dj>
Date: Wed Jul 19 13:14:34 2017 -0400
Fix cast-after-dereference
Original code was dereferencing a char*, then casting the value
to size_t. Should cast the pointer to size_t* then deference.
commit 4fa8ae49aa169fb8d97882938e8bee3ed9ce5410
Author: DJ Delorie <dj>
Date: Fri Jul 14 21:46:42 2017 -0400
Fix BZ #21654 - grp-merge.c alignment
* grp/grp_merge.c (__copy_grp): Align char** to minimum pointer
alignment not char alignment.
(__merge_grp): Likewise.
Note that comment 2 shows the real fix, I think the alignment wasn't the actual cause of the bug. We need all three commits, including: commit 4fa8ae49aa169fb8d97882938e8bee3ed9ce5410 Author: DJ Delorie <dj> Date: Fri Jul 14 21:46:42 2017 -0400 Fix BZ #21654 - grp-merge.c alignment * grp/grp_merge.c (__copy_grp): Align char** to minimum pointer alignment not char alignment. (__merge_grp): Likewise. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2018:0805 |