From owner-freebsd-bugs@freebsd.org Sun Aug 21 21:33:24 2016 Return-Path: Delivered-To: freebsd-bugs@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D1959BC19E8 for ; Sun, 21 Aug 2016 21:33:24 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A78B51C8F for ; Sun, 21 Aug 2016 21:33:24 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id u7LLXOh4051214 for ; Sun, 21 Aug 2016 21:33:24 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 212033] fgetwln(3) fails to report most encoding errors Date: Sun, 21 Aug 2016 21:33:24 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: bin X-Bugzilla-Version: CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: schwarze@usta.de X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-bugs@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Aug 2016 21:33:24 -0000 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.=