nss-systemd: fix off-by-one in nss_pack_group_record_shadow()
nss_count_strv() counts trailing NULL pointers in n. The pointer area then used (n + 1), reserving one slot more than the size check accounted for. Drop the + 1 since n already includes the trailing NULLs, unlike the non-shadow nss_pack_group_record() where n does not. Fixes: https://github.com/systemd/systemd/issues/41591
This commit is contained in:
committed by
Luca Boccassi
parent
03fa2f8982
commit
aa85a742fe
@@ -475,7 +475,9 @@ int nss_pack_group_record_shadow(
|
||||
|
||||
assert(buffer);
|
||||
|
||||
p = buffer + sizeof(void*) * (n + 1); /* place member strings right after the ptr array */
|
||||
/* n already includes trailing NULL pointers from nss_count_strv(), unlike the
|
||||
* non-shadow nss_pack_group_record() where n does not include them. */
|
||||
p = buffer + sizeof(void*) * n;
|
||||
array = (char**) buffer; /* place ptr array at beginning of buffer, under assumption buffer is aligned */
|
||||
|
||||
sgrp->sg_mem = array;
|
||||
|
||||
Reference in New Issue
Block a user