Index: usr.bin/random/randomize_fd.c =================================================================== --- usr.bin/random/randomize_fd.c +++ usr.bin/random/randomize_fd.c @@ -121,7 +121,7 @@ if (len == -1) err(1, "read"); else if (len == 0) { - eof++; + eof = 1; break; } else if ((size_t)len < buflen) buflen = (size_t)len; @@ -133,41 +133,36 @@ for (i = bufc; i <= buflen && bufleft >= 0; i++, bufleft--) { if (i == buflen) { if (fndstr) { - if (!eof) { - memmove(buf, &buf[bufc], i - bufc); - i -= bufc; - bufc = 0; - len = read(fd, &buf[i], buflen - i); - if (len == -1) - err(1, "read"); - else if (len == 0) { - eof++; - break; - } else if (len < (ssize_t)(buflen - i)) - buflen = i + (size_t)len; - - bufleft = (int)len; - fndstr = 0; - } + memmove(buf, &buf[bufc], i - bufc); + i -= bufc; + bufc = 0; + len = read(fd, &buf[i], buflen - i); + if (len == -1) + err(1, "read"); + else if (len == 0) { + eof = 1; + break; + } else if (len < (ssize_t)(buflen - i)) + buflen = i + (size_t)len; + + bufleft = (int)len; + fndstr = 0; } else { buflen *= 2; buf = (u_char *)realloc(buf, buflen); if (buf == NULL) err(1, "realloc"); - if (!eof) { - len = read(fd, &buf[i], buflen - i); - if (len == -1) - err(1, "read"); - else if (len == 0) { - eof++; - break; - } else if (len < (ssize_t)(buflen - i)) - buflen = i + (size_t)len; - - bufleft = (int)len; - } + len = read(fd, &buf[i], buflen - i); + if (len == -1) + err(1, "read"); + else if (len == 0) { + eof = 1; + break; + } else if (len < (ssize_t)(buflen - i)) + buflen = i + (size_t)len; + bufleft = (int)len; } }