99#include "group-record-nss.h"
1010#include "macro.h"
1111#include "nss-util.h"
12+ #include "pthread-util.h"
1213#include "signal-util.h"
1314#include "strv.h"
1415#include "user-util.h"
@@ -277,10 +278,11 @@ static enum nss_status nss_systemd_endent(GetentData *p) {
277278
278279 assert (p );
279280
280- assert_se (pthread_mutex_lock (& p -> mutex ) == 0 );
281+ _cleanup_ (pthread_mutex_unlock_assertp ) pthread_mutex_t * _l = NULL ;
282+ _l = pthread_mutex_lock_assert (& p -> mutex );
283+
281284 p -> iterator = userdb_iterator_free (p -> iterator );
282285 p -> by_membership = false;
283- assert_se (pthread_mutex_unlock (& p -> mutex ) == 0 );
284286
285287 return NSS_STATUS_SUCCESS ;
286288}
@@ -294,45 +296,41 @@ enum nss_status _nss_systemd_endgrent(void) {
294296}
295297
296298enum nss_status _nss_systemd_setpwent (int stayopen ) {
297- enum nss_status ret ;
298-
299299 PROTECT_ERRNO ;
300300 BLOCK_SIGNALS (NSS_SIGNALS_BLOCK );
301301
302302 if (userdb_nss_compat_is_enabled () <= 0 )
303303 return NSS_STATUS_NOTFOUND ;
304304
305- assert_se (pthread_mutex_lock (& getpwent_data .mutex ) == 0 );
305+ _cleanup_ (pthread_mutex_unlock_assertp ) pthread_mutex_t * _l = NULL ;
306+ int r ;
307+
308+ _l = pthread_mutex_lock_assert (& getpwent_data .mutex );
306309
307310 getpwent_data .iterator = userdb_iterator_free (getpwent_data .iterator );
308311 getpwent_data .by_membership = false;
309312
310- ret = userdb_all (nss_glue_userdb_flags (), & getpwent_data .iterator ) < 0 ?
311- NSS_STATUS_UNAVAIL : NSS_STATUS_SUCCESS ;
312-
313- assert_se (pthread_mutex_unlock (& getpwent_data .mutex ) == 0 );
314- return ret ;
313+ r = userdb_all (nss_glue_userdb_flags (), & getpwent_data .iterator );
314+ return r < 0 ? NSS_STATUS_UNAVAIL : NSS_STATUS_SUCCESS ;
315315}
316316
317317enum nss_status _nss_systemd_setgrent (int stayopen ) {
318- enum nss_status ret ;
319-
320318 PROTECT_ERRNO ;
321319 BLOCK_SIGNALS (NSS_SIGNALS_BLOCK );
322320
323321 if (userdb_nss_compat_is_enabled () <= 0 )
324322 return NSS_STATUS_NOTFOUND ;
325323
326- assert_se (pthread_mutex_lock (& getgrent_data .mutex ) == 0 );
324+ _cleanup_ (pthread_mutex_unlock_assertp ) pthread_mutex_t * _l = NULL ;
325+ int r ;
326+
327+ _l = pthread_mutex_lock_assert (& getgrent_data .mutex );
327328
328329 getgrent_data .iterator = userdb_iterator_free (getgrent_data .iterator );
329330 getpwent_data .by_membership = false;
330331
331- ret = groupdb_all (nss_glue_userdb_flags (), & getgrent_data .iterator ) < 0 ?
332- NSS_STATUS_UNAVAIL : NSS_STATUS_SUCCESS ;
333-
334- assert_se (pthread_mutex_unlock (& getgrent_data .mutex ) == 0 );
335- return ret ;
332+ r = groupdb_all (nss_glue_userdb_flags (), & getgrent_data .iterator );
333+ return r < 0 ? NSS_STATUS_UNAVAIL : NSS_STATUS_SUCCESS ;
336334}
337335
338336enum nss_status _nss_systemd_getpwent_r (
@@ -341,7 +339,6 @@ enum nss_status _nss_systemd_getpwent_r(
341339 int * errnop ) {
342340
343341 _cleanup_ (user_record_unrefp ) UserRecord * ur = NULL ;
344- enum nss_status ret ;
345342 int r ;
346343
347344 PROTECT_ERRNO ;
@@ -359,40 +356,33 @@ enum nss_status _nss_systemd_getpwent_r(
359356 if (!r )
360357 return NSS_STATUS_NOTFOUND ;
361358
362- assert_se (pthread_mutex_lock (& getpwent_data .mutex ) == 0 );
359+ _cleanup_ (pthread_mutex_unlock_assertp ) pthread_mutex_t * _l = NULL ;
360+
361+ _l = pthread_mutex_lock_assert (& getpwent_data .mutex );
363362
364363 if (!getpwent_data .iterator ) {
365364 UNPROTECT_ERRNO ;
366365 * errnop = EHOSTDOWN ;
367- ret = NSS_STATUS_UNAVAIL ;
368- goto finish ;
366+ return NSS_STATUS_UNAVAIL ;
369367 }
370368
371369 r = userdb_iterator_get (getpwent_data .iterator , & ur );
372- if (r == - ESRCH ) {
373- ret = NSS_STATUS_NOTFOUND ;
374- goto finish ;
375- }
370+ if (r == - ESRCH )
371+ return NSS_STATUS_NOTFOUND ;
376372 if (r < 0 ) {
377373 UNPROTECT_ERRNO ;
378374 * errnop = - r ;
379- ret = NSS_STATUS_UNAVAIL ;
380- goto finish ;
375+ return NSS_STATUS_UNAVAIL ;
381376 }
382377
383378 r = nss_pack_user_record (ur , result , buffer , buflen );
384379 if (r < 0 ) {
385380 UNPROTECT_ERRNO ;
386381 * errnop = - r ;
387- ret = NSS_STATUS_TRYAGAIN ;
388- goto finish ;
382+ return NSS_STATUS_TRYAGAIN ;
389383 }
390384
391- ret = NSS_STATUS_SUCCESS ;
392-
393- finish :
394- assert_se (pthread_mutex_unlock (& getpwent_data .mutex ) == 0 );
395- return ret ;
385+ return NSS_STATUS_SUCCESS ;
396386}
397387
398388enum nss_status _nss_systemd_getgrent_r (
@@ -402,7 +392,6 @@ enum nss_status _nss_systemd_getgrent_r(
402392
403393 _cleanup_ (group_record_unrefp ) GroupRecord * gr = NULL ;
404394 _cleanup_free_ char * * members = NULL ;
405- enum nss_status ret ;
406395 int r ;
407396
408397 PROTECT_ERRNO ;
@@ -420,13 +409,14 @@ enum nss_status _nss_systemd_getgrent_r(
420409 if (!r )
421410 return NSS_STATUS_UNAVAIL ;
422411
423- assert_se (pthread_mutex_lock (& getgrent_data .mutex ) == 0 );
412+ _cleanup_ (pthread_mutex_unlock_assertp ) pthread_mutex_t * _l = NULL ;
413+
414+ _l = pthread_mutex_lock_assert (& getgrent_data .mutex );
424415
425416 if (!getgrent_data .iterator ) {
426417 UNPROTECT_ERRNO ;
427418 * errnop = EHOSTDOWN ;
428- ret = NSS_STATUS_UNAVAIL ;
429- goto finish ;
419+ return NSS_STATUS_UNAVAIL ;
430420 }
431421
432422 if (!getgrent_data .by_membership ) {
@@ -444,23 +434,20 @@ enum nss_status _nss_systemd_getgrent_r(
444434 if (r < 0 ) {
445435 UNPROTECT_ERRNO ;
446436 * errnop = - r ;
447- ret = NSS_STATUS_UNAVAIL ;
448- goto finish ;
437+ return NSS_STATUS_UNAVAIL ;
449438 }
450439
451440 getgrent_data .by_membership = true;
452441 } else if (r < 0 ) {
453442 UNPROTECT_ERRNO ;
454443 * errnop = - r ;
455- ret = NSS_STATUS_UNAVAIL ;
456- goto finish ;
444+ return NSS_STATUS_UNAVAIL ;
457445 } else if (!STR_IN_SET (gr -> group_name , root_group .gr_name , nobody_group .gr_name )) {
458446 r = membershipdb_by_group_strv (gr -> group_name , nss_glue_userdb_flags (), & members );
459447 if (r < 0 ) {
460448 UNPROTECT_ERRNO ;
461449 * errnop = - r ;
462- ret = NSS_STATUS_UNAVAIL ;
463- goto finish ;
450+ return NSS_STATUS_UNAVAIL ;
464451 }
465452 }
466453 }
@@ -472,15 +459,12 @@ enum nss_status _nss_systemd_getgrent_r(
472459 _cleanup_free_ char * user_name = NULL , * group_name = NULL ;
473460
474461 r = membershipdb_iterator_get (getgrent_data .iterator , & user_name , & group_name );
475- if (r == - ESRCH ) {
476- ret = NSS_STATUS_NOTFOUND ;
477- goto finish ;
478- }
462+ if (r == - ESRCH )
463+ return NSS_STATUS_NOTFOUND ;
479464 if (r < 0 ) {
480465 UNPROTECT_ERRNO ;
481466 * errnop = - r ;
482- ret = NSS_STATUS_UNAVAIL ;
483- goto finish ;
467+ return NSS_STATUS_UNAVAIL ;
484468 }
485469
486470 if (STR_IN_SET (user_name , root_passwd .pw_name , nobody_passwd .pw_name ))
@@ -494,8 +478,7 @@ enum nss_status _nss_systemd_getgrent_r(
494478 if (lock_fd < 0 && lock_fd != - EBUSY ) {
495479 UNPROTECT_ERRNO ;
496480 * errnop = - lock_fd ;
497- ret = NSS_STATUS_UNAVAIL ;
498- goto finish ;
481+ return NSS_STATUS_UNAVAIL ;
499482 }
500483 }
501484
@@ -511,8 +494,7 @@ enum nss_status _nss_systemd_getgrent_r(
511494 if (!members ) {
512495 UNPROTECT_ERRNO ;
513496 * errnop = ENOMEM ;
514- ret = NSS_STATUS_TRYAGAIN ;
515- goto finish ;
497+ return NSS_STATUS_TRYAGAIN ;
516498 }
517499
518500 /* Note that we currently generate one group entry per user that is part of a
@@ -526,15 +508,10 @@ enum nss_status _nss_systemd_getgrent_r(
526508 if (r < 0 ) {
527509 UNPROTECT_ERRNO ;
528510 * errnop = - r ;
529- ret = NSS_STATUS_TRYAGAIN ;
530- goto finish ;
511+ return NSS_STATUS_TRYAGAIN ;
531512 }
532513
533- ret = NSS_STATUS_SUCCESS ;
534-
535- finish :
536- assert_se (pthread_mutex_unlock (& getgrent_data .mutex ) == 0 );
537- return ret ;
514+ return NSS_STATUS_SUCCESS ;
538515}
539516
540517enum nss_status _nss_systemd_initgroups_dyn (
0 commit comments