mirror of git://sourceware.org/git/glibc.git
nss: Group merge does not react to ERANGE during merge (bug 33361)
The break statement in CHECK_MERGE is expected to exit the surrounding
while loop, not the do-while loop with in the macro. Remove the
do-while loop from the macro. It is not needed to turn the macro
expansion into a single statement due to the way CHECK_MERGE is used
(and the statement expression would cover this anyway).
Reviewed-by: Collin Funk <collin.funk1@gmail.com>
(cherry picked from commit 0fceed2545)
This commit is contained in:
parent
9867e44cdc
commit
cf926cd7fb
1
NEWS
1
NEWS
|
|
@ -41,6 +41,7 @@ The following bugs were resolved with this release:
|
|||
[33185] Fix double-free after allocation failure in regcomp
|
||||
[33234] Use TLS initial-exec model for __libc_tsd_CTYPE_* thread variables
|
||||
[33245] nptl: nptl: error in internal cancellation syscall handling
|
||||
[33361] nss: Group merge does not react to ERANGE during merge
|
||||
|
||||
Version 2.41
|
||||
|
||||
|
|
|
|||
|
|
@ -157,19 +157,15 @@ __merge_einval (LOOKUP_TYPE *a,
|
|||
|
||||
#define CHECK_MERGE(err, status) \
|
||||
({ \
|
||||
do \
|
||||
if (err) \
|
||||
{ \
|
||||
if (err) \
|
||||
{ \
|
||||
__set_errno (err); \
|
||||
if (err == ERANGE) \
|
||||
status = NSS_STATUS_TRYAGAIN; \
|
||||
else \
|
||||
status = NSS_STATUS_UNAVAIL; \
|
||||
break; \
|
||||
} \
|
||||
__set_errno (err); \
|
||||
if (err == ERANGE) \
|
||||
status = NSS_STATUS_TRYAGAIN; \
|
||||
else \
|
||||
status = NSS_STATUS_UNAVAIL; \
|
||||
break; \
|
||||
} \
|
||||
while (0); \
|
||||
})
|
||||
|
||||
/* Type of the lookup function we need here. */
|
||||
|
|
|
|||
Loading…
Reference in New Issue