dtsession: fix screen saver/locking on linux

The POSIX __linux__ commit broke the special detection on linux used
to determine whether a secure system was in use or not.

This commit reworks the logic a little bit to avoid special casing
linux in main().

It also reworks the logic in CanReAuthenticate() to fix up some issues
"fixed" to correct converity warnings.  The logic in this case was
mostly ok, but still didn't account for the proper usage of this
function.  Error detection improved somewhat as a result.
This commit is contained in:
Jon Trulson
2018-05-29 12:28:21 -06:00
parent ad219d40c3
commit 20cad57cd4
2 changed files with 25 additions and 33 deletions

View File

@@ -153,14 +153,20 @@ static void BlinkCaret( XtPointer, XtIntervalId *) ;
static Boolean CanReAuthenticate(char *name, uid_t uid, char *passwd,
struct passwd **pwent, struct spwd **spent)
{
Boolean fail = False;
if (!pwent)
return False;
if (pwent)
*pwent = (name == NULL) ? getpwuid(uid) : getpwnam(name);
*spent = getspnam((*pwent)->pw_name);
*pwent = (name == NULL) ? getpwuid(uid) : getpwnam(name);
if (!*pwent)
return False;
*spent = getspnam((*pwent)->pw_name);
#ifdef JET_AUTHDEBUG
fprintf(stderr, "CanReAuthenticate(): %s %s %s\n",
fprintf(stderr, "CanReAuthenticate(): uid: %d name: '%s' errno %d %s %s %s\n",
uid,
(name) ? name : "NULL",
errno,
(*pwent) ? "PWENT" : "NULL",
(*spent) ? "SPENT" : "NULL",
(name) ? name : "NULL");