Project

General

Profile

Submit #2920

_ascii_wcsnrtombs, _ascii_mbsnrtowcs, and _none_wcsnrtombs neglect to set src on EILSEQ error

Added by RockinRoel 12 months ago. Updated 11 months ago.

Status:
New
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
06/08/2016
Due date:
% Done:

0%


Description

DragonFlyBSD's libc also suffers from this bug in FreeBSD and Mac OS X: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=209907

I noticed that when using wcsrtombs, if a character is encountered that can not be converted, it sets errno to EILSEQ and returns (size_t)-1. However *src still points to the original character, even though it should point to the character after the one that conversion stopped at. I've attached a test program that reproduces the issue.

The expected output is:
inptr - in: 7

The actual output is:
inptr - in: 0

I've included the patch that fixes it for the none and ascii locale (it's fine for other locales).

test_wcsrtombs.c View - Test program that reproduces the issue (312 Bytes) RockinRoel, 06/08/2016 04:00 AM

eilseq_fix.patch View - Patch (1006 Bytes) RockinRoel, 06/08/2016 04:06 AM

eilseq_fix_corrected_2.patch View - Fix possible NULL pointer dereference and EILSEQ behavior (1.32 KB) yellowrabbit2010, 06/09/2016 03:00 AM

History

#1 Updated by yellowrabbit2010 12 months ago

corrected patch from RockinRoel and, while we are here fix possible NULL pointer dereference.

#2 Updated by dragonflybsd1 12 months ago

  • Assignee set to dragonflybsd1

Also available in: Atom PDF