Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Aug 2016 21:33:24 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 212033] fgetwln(3) fails to report most encoding errors
Message-ID:  <bug-212033-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D212033

            Bug ID: 212033
           Summary: fgetwln(3) fails to report most encoding errors
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: schwarze@usta.de

Created attachment 173919
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=3D173919&action=
=3Dedit
Patch to stdio/fgetwln.c to make fgetwln(3) fail on fgetwc(3) failure.

The fgetwln(3) manual is quite explicit that the "fgetwln() function
may also fail ... for any of the errors specified for ... mbrtowc(3)"
and that it must return NULL in case of failure.  That's sensible;
we shouldn't expect programmers to inspect ferror(3) or errno(2)
after getting a function return value indicating success.

However, after reading a single valid character, fgetwln(3) will
mistreat all subsequent encoding errors as newlines - returning
success when encountering an invalid encoding, but still setting
both errno(3) and the stdio error indicator.

I committed a fix to OpenBSD which is likely to apply mostly as-is
to FreeBSD as well, see the attachment.

original bug report: http://marc.info/?l=3Dopenbsd-tech&m=3D147178904527666
OpenBSD commit: http://marc.info/?l=3Dopenbsd-cvs&m=3D147181388632431
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fgetwln.c

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-212033-8>