@hexcoder- reported in https://github.com/davidgiven/ack/issues/57
that our getpw() has bugs.
I don't fix these bugs, because Illumos and Linux manual pages say
that getpw() is obsolete. The function can overflow its buffer, so it
is never safe to use. Our libc did not build getpw().
+++ /dev/null
-/*
- * getpw - get a password from the password file
- */
-/* $Id$ */
-
-#include <stdio.h>
-
-getpw(int uid, char buf[])
-{
- register FILE *pwf;
- register int ch, i;
- register char *bp;
-
- pwf = fopen("/etc/passwd", "r");
- if (pwf == NULL) return(1);
-
- for (;;) {
- bp = buf;
- while ((ch = getc(pwf)) != '\n') {
- if (ch == EOF) return 1;
- *bp++ = ch;
- }
- *bp++ = '\0';
- bp = buf;
- for (i = 2; i; i--) {
- while ((ch = *bp++) != ':') {
- if(ch = '\0') return 1;
- }
- }
- i = 0;
- while ((ch = *bp++) != ':') {
- if (ch < '0' || ch > '9') return 1;
- i = i * 10 + (ch - '0');
- }
- if (i == uid) return(0);
- }
- /*NOTREACHED*/
-}