From 03039d4fc21d7fd37bf3552100f383bc0671c947 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 7 May 2014 14:49:54 +0000 Subject: * passwd.cc (pwdgrp::parse_passwd): Fix an off by one computing the buffer len. Add comment. * uinfo.cc (internal_getlogin): Fix typo in comment. --- winsup/cygwin/ChangeLog | 6 ++++++ winsup/cygwin/passwd.cc | 4 +++- winsup/cygwin/uinfo.cc | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index a9c3f9f02..21608730e 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2014-05-07 Corinna Vinschen + + * passwd.cc (pwdgrp::parse_passwd): Fix an off by one computing the + buffer len. Add comment. + * uinfo.cc (internal_getlogin): Fix typo in comment. + 2014-05-07 Corinna Vinschen * uinfo.cc (pwdgrp::fetch_account_from_windows): Tweak SID<->uid diff --git a/winsup/cygwin/passwd.cc b/winsup/cygwin/passwd.cc index 9a7c91863..4482ce124 100644 --- a/winsup/cygwin/passwd.cc +++ b/winsup/cygwin/passwd.cc @@ -41,7 +41,9 @@ pwdgrp::parse_passwd () res.p.pw_dir = next_str (':'); res.p.pw_shell = next_str (':'); res.sid.getfrompw (&res.p); - res.len = lptr - res.p.pw_name; + /* lptr points to the \0 after pw_shell. Increment by one to get the correct + required buffer len in getpw_cp. */ + res.len = lptr - res.p.pw_name + 1; return true; } diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 5d69f4236..221eabfb2 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -135,7 +135,7 @@ internal_getlogin (cygheap_user &user) user.set_name (pwd->pw_name); myself->uid = pwd->pw_uid; myself->gid = pwd->pw_gid; - /* Is the primary group in the passwd DB is different from the primary + /* If the primary group in the passwd DB is different from the primary group in the user token, we have to find the SID of that group and try to override the token primary group. */ if (!pgrp || myself->gid != pgrp->gr_gid) -- cgit v1.2.3