You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.0 KiB
36 lines
1.0 KiB
7 years ago
|
commit a6033052d08027f745867e5e346852da1959226c
|
||
|
Author: Florian Weimer <fweimer@redhat.com>
|
||
|
Date: Tue Mar 29 11:27:32 2016 +0200
|
||
|
|
||
|
nss_db: Propagate ERANGE error if parse_line fails [BZ #19837]
|
||
|
|
||
|
Reproducer (needs to run as root):
|
||
|
|
||
|
perl -e \
|
||
|
'print "large:x:999:" . join(",", map {"user$_"} (1 .. 135))."\n"' \
|
||
|
>> /etc/group
|
||
|
cd /var/db
|
||
|
make
|
||
|
getent -s db group
|
||
|
|
||
|
After the fix, the last command should list the "large" group.
|
||
|
|
||
|
The magic number 135 has been chosen so that the line is shorter than
|
||
|
1024 bytes, but the pointers required to encode the member array will
|
||
|
cross the threshold, triggering the bug.
|
||
|
|
||
|
Index: b/nss/nss_db/db-XXX.c
|
||
|
===================================================================
|
||
|
--- a/nss/nss_db/db-XXX.c
|
||
|
+++ b/nss/nss_db/db-XXX.c
|
||
|
@@ -284,8 +284,8 @@ CONCAT(_nss_db_get,ENTNAME_r) (struct ST
|
||
|
}
|
||
|
if (err < 0)
|
||
|
{
|
||
|
- H_ERRNO_SET (HOST_NOT_FOUND);
|
||
|
- status = NSS_STATUS_NOTFOUND;
|
||
|
+ H_ERRNO_SET (NETDB_INTERNAL);
|
||
|
+ status = NSS_STATUS_TRYAGAIN;
|
||
|
break;
|
||
|
}
|