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>
This commit is contained in:
parent
4fbb2eb2c0
commit
c7432b13fa
@ -1,3 +1,8 @@
|
|||||||
|
2015-12-16 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* grp.cc (pwdgrp::parse_group): Only copy the SID if it's valid.
|
||||||
|
* passwd.cc (pwdgrp::parse_passwd): Ditto.
|
||||||
|
|
||||||
2015-12-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
2015-12-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
* include/cygwin/signal.h (sigset_t): Move defintition to newlib.
|
* include/cygwin/signal.h (sigset_t): Move defintition to newlib.
|
||||||
|
@ -48,8 +48,8 @@ pwdgrp::parse_group ()
|
|||||||
/* Don't generate gr_mem entries. */
|
/* Don't generate gr_mem entries. */
|
||||||
grp.g.gr_mem = &null_ptr;
|
grp.g.gr_mem = &null_ptr;
|
||||||
cygsid csid;
|
cygsid csid;
|
||||||
csid.getfromgr_passwd (&grp.g);
|
if (csid.getfromgr_passwd (&grp.g))
|
||||||
RtlCopySid (SECURITY_MAX_SID_SIZE, grp.sid, csid);
|
RtlCopySid (SECURITY_MAX_SID_SIZE, grp.sid, csid);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,8 +41,8 @@ pwdgrp::parse_passwd ()
|
|||||||
res.p.pw_dir = next_str (':');
|
res.p.pw_dir = next_str (':');
|
||||||
res.p.pw_shell = next_str (':');
|
res.p.pw_shell = next_str (':');
|
||||||
cygsid csid;
|
cygsid csid;
|
||||||
csid.getfrompw_gecos (&res.p);
|
if (csid.getfrompw_gecos (&res.p))
|
||||||
RtlCopySid (SECURITY_MAX_SID_SIZE, res.sid, csid);
|
RtlCopySid (SECURITY_MAX_SID_SIZE, res.sid, csid);
|
||||||
/* lptr points to the \0 after pw_shell. Increment by one to get the correct
|
/* lptr points to the \0 after pw_shell. Increment by one to get the correct
|
||||||
required buffer len in getpw_cp. */
|
required buffer len in getpw_cp. */
|
||||||
res.len = lptr - res.p.pw_name + 1;
|
res.len = lptr - res.p.pw_name + 1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user