getpwent.c (d915a14ef094c8dfc1a5aee70e135abfec01d0f1) | getpwent.c (34e9190d82ac021bae00937cc1a663920aa19309) |
---|---|
1/*- 2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3 * 4 * Copyright (c) 2003 Networks Associates Technology, Inc. 5 * All rights reserved. 6 * 7 * This software was developed for the FreeBSD Project by 8 * Jacques A. Vidrine, Safeport Network Services, and Network --- 82 unchanged lines hidden (view full) --- 91 { NSSRC_COMPAT, NS_SUCCESS }, 92 { NULL, 0 } 93}; 94 95int __pw_match_entry(const char *, size_t, enum nss_lookup_type, 96 const char *, uid_t); 97int __pw_parse_entry(char *, size_t, struct passwd *, int, int *errnop); 98 | 1/*- 2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3 * 4 * Copyright (c) 2003 Networks Associates Technology, Inc. 5 * All rights reserved. 6 * 7 * This software was developed for the FreeBSD Project by 8 * Jacques A. Vidrine, Safeport Network Services, and Network --- 82 unchanged lines hidden (view full) --- 91 { NSSRC_COMPAT, NS_SUCCESS }, 92 { NULL, 0 } 93}; 94 95int __pw_match_entry(const char *, size_t, enum nss_lookup_type, 96 const char *, uid_t); 97int __pw_parse_entry(char *, size_t, struct passwd *, int, int *errnop); 98 |
99static void pwd_init(struct passwd *); 100 | |
101union key { 102 const char *name; 103 uid_t uid; 104}; 105 106static struct passwd *getpw(int (*fn)(union key, struct passwd *, char *, 107 size_t, struct passwd **), union key); 108static int wrap_getpwnam_r(union key, struct passwd *, char *, --- 413 unchanged lines hidden (view full) --- 522 { NSSRC_COMPAT, compat_passwd, (void *)nss_lt_all }, 523#ifdef NS_CACHING 524 NS_CACHE_CB(&cache_info) 525#endif 526 { NULL, NULL, NULL } 527 }; 528 int rv, ret_errno; 529 | 99union key { 100 const char *name; 101 uid_t uid; 102}; 103 104static struct passwd *getpw(int (*fn)(union key, struct passwd *, char *, 105 size_t, struct passwd **), union key); 106static int wrap_getpwnam_r(union key, struct passwd *, char *, --- 413 unchanged lines hidden (view full) --- 520 { NSSRC_COMPAT, compat_passwd, (void *)nss_lt_all }, 521#ifdef NS_CACHING 522 NS_CACHE_CB(&cache_info) 523#endif 524 { NULL, NULL, NULL } 525 }; 526 int rv, ret_errno; 527 |
530 pwd_init(pwd); | 528 __pw_initpwd(pwd); |
531 ret_errno = 0; 532 *result = NULL; 533 rv = _nsdispatch(result, dtab, NSDB_PASSWD, "getpwent_r", defaultsrc, 534 pwd, buffer, bufsize, &ret_errno); 535 if (rv == NS_SUCCESS) 536 return (0); 537 else 538 return (ret_errno); --- 22 unchanged lines hidden (view full) --- 561 { NSSRC_COMPAT, compat_passwd, (void *)nss_lt_name }, 562#ifdef NS_CACHING 563 NS_CACHE_CB(&cache_info) 564#endif 565 { NULL, NULL, NULL } 566 }; 567 int rv, ret_errno; 568 | 529 ret_errno = 0; 530 *result = NULL; 531 rv = _nsdispatch(result, dtab, NSDB_PASSWD, "getpwent_r", defaultsrc, 532 pwd, buffer, bufsize, &ret_errno); 533 if (rv == NS_SUCCESS) 534 return (0); 535 else 536 return (ret_errno); --- 22 unchanged lines hidden (view full) --- 559 { NSSRC_COMPAT, compat_passwd, (void *)nss_lt_name }, 560#ifdef NS_CACHING 561 NS_CACHE_CB(&cache_info) 562#endif 563 { NULL, NULL, NULL } 564 }; 565 int rv, ret_errno; 566 |
569 pwd_init(pwd); | 567 __pw_initpwd(pwd); |
570 ret_errno = 0; 571 *result = NULL; 572 rv = _nsdispatch(result, dtab, NSDB_PASSWD, "getpwnam_r", defaultsrc, 573 name, pwd, buffer, bufsize, &ret_errno); 574 if (rv == NS_SUCCESS) 575 return (0); 576 else 577 return (ret_errno); --- 22 unchanged lines hidden (view full) --- 600 { NSSRC_COMPAT, compat_passwd, (void *)nss_lt_id }, 601#ifdef NS_CACHING 602 NS_CACHE_CB(&cache_info) 603#endif 604 { NULL, NULL, NULL } 605 }; 606 int rv, ret_errno; 607 | 568 ret_errno = 0; 569 *result = NULL; 570 rv = _nsdispatch(result, dtab, NSDB_PASSWD, "getpwnam_r", defaultsrc, 571 name, pwd, buffer, bufsize, &ret_errno); 572 if (rv == NS_SUCCESS) 573 return (0); 574 else 575 return (ret_errno); --- 22 unchanged lines hidden (view full) --- 598 { NSSRC_COMPAT, compat_passwd, (void *)nss_lt_id }, 599#ifdef NS_CACHING 600 NS_CACHE_CB(&cache_info) 601#endif 602 { NULL, NULL, NULL } 603 }; 604 int rv, ret_errno; 605 |
608 pwd_init(pwd); | 606 __pw_initpwd(pwd); |
609 ret_errno = 0; 610 *result = NULL; 611 rv = _nsdispatch(result, dtab, NSDB_PASSWD, "getpwuid_r", defaultsrc, 612 uid, pwd, buffer, bufsize, &ret_errno); 613 if (rv == NS_SUCCESS) 614 return (0); 615 else 616 return (ret_errno); 617} 618 619 | 607 ret_errno = 0; 608 *result = NULL; 609 rv = _nsdispatch(result, dtab, NSDB_PASSWD, "getpwuid_r", defaultsrc, 610 uid, pwd, buffer, bufsize, &ret_errno); 611 if (rv == NS_SUCCESS) 612 return (0); 613 else 614 return (ret_errno); 615} 616 617 |
620static void 621pwd_init(struct passwd *pwd) 622{ 623 static char nul[] = ""; 624 625 memset(pwd, 0, sizeof(*pwd)); 626 pwd->pw_uid = (uid_t)-1; /* Considered least likely to lead to */ 627 pwd->pw_gid = (gid_t)-1; /* a security issue. */ 628 pwd->pw_name = nul; 629 pwd->pw_passwd = nul; 630 pwd->pw_class = nul; 631 pwd->pw_gecos = nul; 632 pwd->pw_dir = nul; 633 pwd->pw_shell = nul; 634} 635 636 | |
637static struct passwd pwd; 638static char *pwd_storage; 639static size_t pwd_storage_size; 640 641 642static struct passwd * 643getpw(int (*fn)(union key, struct passwd *, char *, size_t, struct passwd **), 644 union key key) --- 964 unchanged lines hidden (view full) --- 1609 { NULL, NULL, NULL } 1610 }; 1611 void *discard; 1612 int e, i, rv; 1613 1614 for (i = 0; i < (int)(nitems(dtab) - 1); i++) 1615 dtab[i].mdata = (void *)lookup_how; 1616more: | 618static struct passwd pwd; 619static char *pwd_storage; 620static size_t pwd_storage_size; 621 622 623static struct passwd * 624getpw(int (*fn)(union key, struct passwd *, char *, size_t, struct passwd **), 625 union key key) --- 964 unchanged lines hidden (view full) --- 1590 { NULL, NULL, NULL } 1591 }; 1592 void *discard; 1593 int e, i, rv; 1594 1595 for (i = 0; i < (int)(nitems(dtab) - 1); i++) 1596 dtab[i].mdata = (void *)lookup_how; 1597more: |
1617 pwd_init(pwd); | 1598 __pw_initpwd(pwd); |
1618 switch (lookup_how) { 1619 case nss_lt_all: 1620 rv = _nsdispatch(&discard, dtab, NSDB_PASSWD_COMPAT, 1621 "getpwent_r", compatsrc, pwd, buffer, bufsize, 1622 errnop); 1623 break; 1624 case nss_lt_id: 1625 rv = _nsdispatch(&discard, dtab, NSDB_PASSWD_COMPAT, --- 387 unchanged lines hidden --- | 1599 switch (lookup_how) { 1600 case nss_lt_all: 1601 rv = _nsdispatch(&discard, dtab, NSDB_PASSWD_COMPAT, 1602 "getpwent_r", compatsrc, pwd, buffer, bufsize, 1603 errnop); 1604 break; 1605 case nss_lt_id: 1606 rv = _nsdispatch(&discard, dtab, NSDB_PASSWD_COMPAT, --- 387 unchanged lines hidden --- |