Project

General

Profile

Actions

Submit #2920

closed

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

Added by RockinRoel over 8 years ago. Updated over 5 years ago.

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

0%

Estimated time:

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).


Files

test_wcsrtombs.c (312 Bytes) test_wcsrtombs.c Test program that reproduces the issue RockinRoel, 06/08/2016 04:00 AM
eilseq_fix.patch (1006 Bytes) eilseq_fix.patch Patch RockinRoel, 06/08/2016 04:06 AM
eilseq_fix_corrected_2.patch (1.32 KB) eilseq_fix_corrected_2.patch Fix possible NULL pointer dereference and EILSEQ behavior yellowrabbit2010, 06/09/2016 03:00 AM
Actions

Also available in: Atom PDF