|
Message-Id: <1385003621-10289-1-git-send-email-mforney@mforney.org> Date: Wed, 20 Nov 2013 19:13:39 -0800 From: Michael Forney <mforney@...rney.org> To: musl@...ts.openwall.com Subject: [PATCH 0/2] Implement fgetspent Hi Rich, It turns out that one more function, fgetspent, is needed for the common shadow+pam_unix setup used in many desktop systems. Otherwise, when changing your password, pam_unix will attempt to enumerate through the shadow entries with fgetspent, rewriting them as it goes (and replacing the entry to be updated). This leaves you with a shadow file containing only the updated entry. In the first patch, I moved spent parsing to an internal function, __parsespent. I opted to use __parsespent instead of __getspent_a (similar to the passwd and group functions) for several reasons: - To minimize the changes necessary to getspnam_r - To avoid the extra memcpy as in getpw_r - It seemed like a more self-contained function (which didn't rely on the source of the entry). - It would make it easier to implement sgetspent if we ever wanted that (though, so far, I haven't found anything that requires this) However, if this is not desired, I can send a new patch which uses a function __getspent_a, similar to __get{pw,gr}ent_a. Michael Forney (2): shadow: Move spent parsing to internal function shadow: Implement fgetspent src/passwd/fgetspent.c | 11 ++++++++++- src/passwd/getspnam_r.c | 34 +--------------------------------- src/passwd/parsespent.c | 42 ++++++++++++++++++++++++++++++++++++++++++ src/passwd/pwf.h | 2 +- 4 files changed, 54 insertions(+), 35 deletions(-) create mode 100644 src/passwd/parsespent.c -- 1.8.4.2
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.