Bug 1291554
Summary: | lslogins crash when executed with buggy username | |||
---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Mohit Agrawal <moagrawa> | |
Component: | util-linux | Assignee: | Karel Zak <kzak> | |
Status: | CLOSED ERRATA | QA Contact: | qe-baseos-daemons | |
Severity: | high | Docs Contact: | ||
Priority: | urgent | |||
Version: | 7.3 | CC: | fkrska, jscotka, kzak, mkolaja, snagar, tbowling | |
Target Milestone: | rc | Keywords: | ZStream | |
Target Release: | 7.3 | |||
Hardware: | x86_64 | |||
OS: | Linux | |||
Whiteboard: | ||||
Fixed In Version: | Doc Type: | Bug Fix | ||
Doc Text: | Story Points: | --- | ||
Clone Of: | ||||
: | 1317953 (view as bug list) | Environment: | ||
Last Closed: | 2016-11-03 21:25:49 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: | ||||
Bug Blocks: | 1203710, 1289485, 1313485, 1317953 |
Description
Mohit Agrawal
2015-12-15 06:51:14 UTC
Hi, After checked the lslogins code it seems get_user_info is returned NULL if user does not exist and initially errno is 0 static struct lslogins_user *get_user_info(struct lslogins_control *ctl, const char *username) { struct lslogins_user *user; struct passwd *pwd; struct group *grp; struct spwd *shadow; struct utmp *user_wtmp = NULL, *user_btmp = NULL; int n = 0; time_t time; uid_t uid; errno = 0; pwd = username ? getpwnam(username) : getpwent(); if (!pwd) return NULL; ....... ....... } In function get_user to validate about error it is doing logical and with errno but if errno is 0 in that case the code path will not execute even user is NULL so it will return 0,It should check if user is NULL then should return -1. static int get_user(struct lslogins_control *ctl, struct lslogins_user **user,const char *username) { *user = get_user_info(ctl, username); if (!*user && errno) if (IS_REAL_ERRNO(errno)) return -1; return 0; } I think after update above condition it will execute successfully. Fixed by upstream commit 123f0f5bf00635e5dd7e5cbc73f906bf2a0bed9c. It would be probably nice to rebase all lslogins.c with the current upstream. There is many another bugfixes. Does this also affect RHEL 6? Should this be cloned? (In reply to Terry Bowling from comment #15) > Does this also affect RHEL 6? Should this be cloned? The most fatal issues should be already fixed in RHEL6.8 (see bug #1215840), the last missing things for RHEL6 are nonsenses in --help output. 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://rhn.redhat.com/errata/RHSA-2016-2605.html |