summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/passwd.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2015-12-16 12:25:27 +0100
committerCorinna Vinschen <corinna@vinschen.de>2015-12-16 12:25:27 +0100
commitc7432b13faa27c240b8c31bb45d1f2888ef34ffd (patch)
treec63ff2d044b2ad8ab795abd9882cbd742784b7c4 /winsup/cygwin/passwd.cc
parent4fbb2eb2c0e9ea6bbbb28e3d479377df44fff869 (diff)
downloadcygnal-c7432b13faa27c240b8c31bb45d1f2888ef34ffd.tar.gz
cygnal-c7432b13faa27c240b8c31bb45d1f2888ef34ffd.tar.bz2
cygnal-c7432b13faa27c240b8c31bb45d1f2888ef34ffd.zip
Fix crash reading invalid SIDs from passwd and group files
* grp.cc (pwdgrp::parse_group): Only copy the SID if it's valid. * passwd.cc (pwdgrp::parse_passwd): Ditto. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin/passwd.cc')
-rw-r--r--winsup/cygwin/passwd.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/winsup/cygwin/passwd.cc b/winsup/cygwin/passwd.cc
index 54e429ccf..6526243c8 100644
--- a/winsup/cygwin/passwd.cc
+++ b/winsup/cygwin/passwd.cc
@@ -41,8 +41,8 @@ pwdgrp::parse_passwd ()
res.p.pw_dir = next_str (':');
res.p.pw_shell = next_str (':');
cygsid csid;
- csid.getfrompw_gecos (&res.p);
- RtlCopySid (SECURITY_MAX_SID_SIZE, res.sid, csid);
+ if (csid.getfrompw_gecos (&res.p))
+ RtlCopySid (SECURITY_MAX_SID_SIZE, res.sid, csid);
/* 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;