View | Details | Raw Unified | Return to bug 252094 | Differences between
and this patch

Collapse All | Expand All

(-)lib/libc/gen/getpwent.c (-7 / +11 lines)
Lines 1726-1731 Link Here
1726
{
1726
{
1727
	char			 keybuf[MAXLOGNAME + 1];
1727
	char			 keybuf[MAXLOGNAME + 1];
1728
	DBT			 key, entry;
1728
	DBT			 key, entry;
1729
	pwkeynum		 keynum;
1729
	struct compat_state	*st;
1730
	struct compat_state	*st;
1730
	enum nss_lookup_type	 how;
1731
	enum nss_lookup_type	 how;
1731
	const char		*name;
1732
	const char		*name;
Lines 1776-1784 Link Here
1776
			rv = NS_NOTFOUND;
1777
			rv = NS_NOTFOUND;
1777
			goto fin;
1778
			goto fin;
1778
		}
1779
		}
1780
		keynum = st->keynum;
1779
		stayopen = 1;
1781
		stayopen = 1;
1780
	} else {
1782
	} else {
1781
		st->keynum = 0;
1783
		keynum = 0;
1782
		stayopen = st->stayopen;
1784
		stayopen = st->stayopen;
1783
	}
1785
	}
1784
docompat:
1786
docompat:
Lines 1822-1834 Link Here
1822
	}
1824
	}
1823
	key.data = keybuf;
1825
	key.data = keybuf;
1824
	rv = NS_NOTFOUND;
1826
	rv = NS_NOTFOUND;
1825
	while (st->keynum >= 0) {
1827
	while (keynum >= 0) {
1826
		st->keynum++;
1828
		keynum++;
1827
		if (st->version < _PWD_CURRENT_VERSION) {
1829
		if (st->version < _PWD_CURRENT_VERSION) {
1828
			memcpy(&keybuf[1], &st->keynum, sizeof(st->keynum));
1830
			memcpy(&keybuf[1], &keynum, sizeof(keynum));
1829
			key.size = sizeof(st->keynum) + 1;
1831
			key.size = sizeof(keynum) + 1;
1830
		} else {
1832
		} else {
1831
			store = htonl(st->keynum);
1833
			store = htonl(keynum);
1832
			memcpy(&keybuf[1], &store, sizeof(store));
1834
			memcpy(&keybuf[1], &store, sizeof(store));
1833
			key.size = sizeof(store) + 1;
1835
			key.size = sizeof(store) + 1;
1834
		}
1836
		}
Lines 1839-1845 Link Here
1839
			rv = NS_UNAVAIL;
1841
			rv = NS_UNAVAIL;
1840
			goto fin;
1842
			goto fin;
1841
		} else if (rv == 1) {
1843
		} else if (rv == 1) {
1842
			st->keynum = -1;
1844
			keynum = -1;
1843
			rv = NS_NOTFOUND;
1845
			rv = NS_NOTFOUND;
1844
			goto fin;
1846
			goto fin;
1845
		}
1847
		}
Lines 1924-1929 Link Here
1924
			break;
1926
			break;
1925
	}
1927
	}
1926
fin:
1928
fin:
1929
	if (how == nss_lt_all)
1930
		st->keynum = keynum;
1927
	if (st->db != NULL && !stayopen) {
1931
	if (st->db != NULL && !stayopen) {
1928
		(void)st->db->close(st->db);
1932
		(void)st->db->close(st->db);
1929
		st->db = NULL;
1933
		st->db = NULL;

Return to bug 252094