"if 0" in auth-pam.c

Italo Antonio italo.migotto at proteus.com.br
Fri Feb 21 04:00:19 EST 2003


Hi,

I was doing some research on why new openssh-versions (3.4 and 3.5p1) 
doesnt ask you to change expired passwords (it just disconnects you) and 
found something curious.

Line 259 of auth-pam.c has "#if 0" and then the code to set some vars 
(eg. password_change_required to true) followed by an "endif". Why is 
that? I'm not a C expert, but I think "if 0" is a non-possible 
situation, right?

I then removed these conditions, and it worked just fine, changed my 
password as it should..

btw, yes, I removed "Privilege Separation" to do these tests.


Here is the piece of code I'm talking about:

        switch (pam_retval) {
                case PAM_SUCCESS:
                        /* This is what we want */
                        break;
#if 0
                case PAM_NEW_AUTHTOK_REQD:
                        message_cat(&__pam_msg, use_privsep ?
                            NEW_AUTHTOK_MSG_PRIVSEP : NEW_AUTHTOK_MSG);
                        /* flag that password change is necessary */
                        password_change_required = 1;
                        /* disallow other functionality for now */
                        no_port_forwarding_flag |= 2;
                        no_agent_forwarding_flag |= 2;
                        no_x11_forwarding_flag |= 2;
                        break;
#endif
                default:
                        log("PAM rejected by account configuration[%d]: "
                            "%.200s", pam_retval, PAM_STRERROR(__pamh,
                            pam_retval));
                        return(0);
        }





More information about the openssh-unix-dev mailing list