getservbyport_r: fix out-of-bounds buffer read
[musl] / src / stdio / __toread.c
index b08f5bb..f142ff0 100644 (file)
@@ -3,7 +3,7 @@
 int __toread(FILE *f)
 {
        f->mode |= f->mode-1;
-       if (f->wpos > f->buf) f->write(f, 0, 0);
+       if (f->wpos != f->wbase) f->write(f, 0, 0);
        f->wpos = f->wbase = f->wend = 0;
        if (f->flags & F_NORD) {
                f->flags |= F_ERR;
@@ -13,9 +13,7 @@ int __toread(FILE *f)
        return (f->flags & F_EOF) ? EOF : 0;
 }
 
-void __stdio_exit_needed(void);
-
-void __toread_needs_stdio_exit()
+hidden void __toread_needs_stdio_exit()
 {
        __stdio_exit_needed();
 }