Add length check creating domain\group strings
Fix Coverity CID 153932 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
9fbd510569
commit
40668dcc7c
@ -342,9 +342,9 @@ static bool
|
|||||||
get_user_groups (WCHAR *logonserver, cygsidlist &grp_list,
|
get_user_groups (WCHAR *logonserver, cygsidlist &grp_list,
|
||||||
PWCHAR user, PWCHAR domain)
|
PWCHAR user, PWCHAR domain)
|
||||||
{
|
{
|
||||||
WCHAR dgroup[MAX_DOMAIN_NAME_LEN + GNLEN + 2];
|
WCHAR dgroup[MAX_DOMAIN_NAME_LEN + GNLEN + 2], *grp_p;
|
||||||
LPGROUP_USERS_INFO_0 buf;
|
LPGROUP_USERS_INFO_0 buf;
|
||||||
DWORD cnt, tot, len;
|
DWORD cnt, tot;
|
||||||
NET_API_STATUS ret;
|
NET_API_STATUS ret;
|
||||||
|
|
||||||
/* Look only on logonserver */
|
/* Look only on logonserver */
|
||||||
@ -363,9 +363,8 @@ get_user_groups (WCHAR *logonserver, cygsidlist &grp_list,
|
|||||||
return ret == NERR_UserNotFound || ret == ERROR_ACCESS_DENIED;
|
return ret == NERR_UserNotFound || ret == ERROR_ACCESS_DENIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = wcslen (domain);
|
grp_p = wcpncpy (dgroup, domain, MAX_DOMAIN_NAME_LEN);
|
||||||
wcscpy (dgroup, domain);
|
*grp_p++ = L'\\';
|
||||||
dgroup[len++] = L'\\';
|
|
||||||
|
|
||||||
for (DWORD i = 0; i < cnt; ++i)
|
for (DWORD i = 0; i < cnt; ++i)
|
||||||
{
|
{
|
||||||
@ -375,7 +374,8 @@ get_user_groups (WCHAR *logonserver, cygsidlist &grp_list,
|
|||||||
DWORD dlen = sizeof (dom);
|
DWORD dlen = sizeof (dom);
|
||||||
SID_NAME_USE use = SidTypeInvalid;
|
SID_NAME_USE use = SidTypeInvalid;
|
||||||
|
|
||||||
wcscpy (dgroup + len, buf[i].grui0_name);
|
*wcpncpy (grp_p, buf[i].grui0_name, sizeof dgroup / sizeof *dgroup
|
||||||
|
- (grp_p - dgroup) - 1) = L'\0';
|
||||||
if (!LookupAccountNameW (NULL, dgroup, gsid, &glen, dom, &dlen, &use))
|
if (!LookupAccountNameW (NULL, dgroup, gsid, &glen, dom, &dlen, &use))
|
||||||
debug_printf ("LookupAccountName(%W), %E", dgroup);
|
debug_printf ("LookupAccountName(%W), %E", dgroup);
|
||||||
else if (well_known_sid_type (use))
|
else if (well_known_sid_type (use))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user