public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug stdio/13822] New: fmemopen cannot handle wide chars
@ 2012-03-08  9:11 polacek at redhat dot com
  2012-10-25 12:47 ` [Bug stdio/13822] " siddhesh at redhat dot com
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: polacek at redhat dot com @ 2012-03-08  9:11 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=13822

             Bug #: 13822
           Summary: fmemopen cannot handle wide chars
           Product: glibc
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: stdio
        AssignedTo: unassigned@sourceware.org
        ReportedBy: polacek@redhat.com
    Classification: Unclassified


Created attachment 6271
  --> http://sourceware.org/bugzilla/attachment.cgi?id=6271
Testcase.

Attached testcase segfaults with Fedora 16 glibc and trunk as well.  The
problem is that fgetws_unlocked calls _IO_getwline which is just
return _IO_getwline_info (fp, buf, n, delim, extract_delim, (wint_t *) 0);
however, in _IO_getwline_info is
_IO_ssize_t len = (fp->_wide_data->_IO_read_end
                   - fp->_wide_data->_IO_read_ptr);
whereas
(gdb) p fp->_wide_data
$6 = (struct _IO_wide_data *) 0x0

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug stdio/13822] fmemopen cannot handle wide chars
  2012-03-08  9:11 [Bug stdio/13822] New: fmemopen cannot handle wide chars polacek at redhat dot com
@ 2012-10-25 12:47 ` siddhesh at redhat dot com
  2012-10-25 12:55 ` siddhesh at redhat dot com
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: siddhesh at redhat dot com @ 2012-10-25 12:47 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=13822

Siddhesh Poyarekar <siddhesh at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |siddhesh at redhat dot com

--- Comment #1 from Siddhesh Poyarekar <siddhesh at redhat dot com> 2012-10-25 12:46:41 UTC ---
That's because fmemopen does not support wide character functions.  There's
open_wmemstream that is a close replacement.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug stdio/13822] fmemopen cannot handle wide chars
  2012-03-08  9:11 [Bug stdio/13822] New: fmemopen cannot handle wide chars polacek at redhat dot com
  2012-10-25 12:47 ` [Bug stdio/13822] " siddhesh at redhat dot com
@ 2012-10-25 12:55 ` siddhesh at redhat dot com
  2012-10-25 13:11 ` polacek at redhat dot com
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: siddhesh at redhat dot com @ 2012-10-25 12:55 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=13822

Siddhesh Poyarekar <siddhesh at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug stdio/13822] fmemopen cannot handle wide chars
  2012-03-08  9:11 [Bug stdio/13822] New: fmemopen cannot handle wide chars polacek at redhat dot com
  2012-10-25 12:47 ` [Bug stdio/13822] " siddhesh at redhat dot com
  2012-10-25 12:55 ` siddhesh at redhat dot com
@ 2012-10-25 13:11 ` polacek at redhat dot com
  2012-10-25 13:21 ` siddhesh at redhat dot com
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: polacek at redhat dot com @ 2012-10-25 13:11 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=13822

--- Comment #2 from Marek Polacek <polacek at redhat dot com> 2012-10-25 13:10:40 UTC ---
Yes, but I think we shouldn't just segfault.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug stdio/13822] fmemopen cannot handle wide chars
  2012-03-08  9:11 [Bug stdio/13822] New: fmemopen cannot handle wide chars polacek at redhat dot com
                   ` (2 preceding siblings ...)
  2012-10-25 13:11 ` polacek at redhat dot com
@ 2012-10-25 13:21 ` siddhesh at redhat dot com
  2012-10-25 18:12 ` bugdal at aerifal dot cx
  2014-06-26 14:01 ` fweimer at redhat dot com
  5 siblings, 0 replies; 7+ messages in thread
From: siddhesh at redhat dot com @ 2012-10-25 13:21 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=13822

--- Comment #3 from Siddhesh Poyarekar <siddhesh at redhat dot com> 2012-10-25 13:20:43 UTC ---
For that I guess it would be simple to make all the wide char functions return
NULL if they're called on an fp with _mode == -1.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug stdio/13822] fmemopen cannot handle wide chars
  2012-03-08  9:11 [Bug stdio/13822] New: fmemopen cannot handle wide chars polacek at redhat dot com
                   ` (3 preceding siblings ...)
  2012-10-25 13:21 ` siddhesh at redhat dot com
@ 2012-10-25 18:12 ` bugdal at aerifal dot cx
  2014-06-26 14:01 ` fweimer at redhat dot com
  5 siblings, 0 replies; 7+ messages in thread
From: bugdal at aerifal dot cx @ 2012-10-25 18:12 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=13822

Rich Felker <bugdal at aerifal dot cx> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugdal at aerifal dot cx

--- Comment #4 from Rich Felker <bugdal at aerifal dot cx> 2012-10-25 18:12:23 UTC ---
Per the standard, calling wide functions on a byte-oriented stream or byte
functions on a wide-oriented stream is not an error; it's undefined behavior.
Therefore, the crash is justified if the stream is byte-oriented.

However, I see nothing in the standard that requires or allows the stream
obtained by fmemopen to be initially byte-oriented, so presumably the POSIX
standard, as written, requires it to be initially unoriented. Unlike
open_wmemstream, which generates a wchar_t string, I think the natural behavior
for fmemopen if put in a wide-oriented mode would be to convert to multibyte
characters, and work with file offsets in bytes, just like an ordinary file
(this is the normal behavior for stream functions; the open_wmemstream behavior
is pathological). This is how my implementation of fmemopen in musl works (not
by design; just as a consequence of how our wide functions work).

Of course, if the glibc maintainers think fmemopen should return a
byte-oriented stream, I would not object to this, but I think that calls for
opening a defect report with the Austin Group and requesting that POSIX specify
that fmemopen returns a byte-oriented stream, or at least that it MAY return a
byte-oriented stream, in which case calling wide functions on it would invoke
undefined behavior.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug stdio/13822] fmemopen cannot handle wide chars
  2012-03-08  9:11 [Bug stdio/13822] New: fmemopen cannot handle wide chars polacek at redhat dot com
                   ` (4 preceding siblings ...)
  2012-10-25 18:12 ` bugdal at aerifal dot cx
@ 2014-06-26 14:01 ` fweimer at redhat dot com
  5 siblings, 0 replies; 7+ messages in thread
From: fweimer at redhat dot com @ 2014-06-26 14:01 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=13822

Florian Weimer <fweimer at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
              Flags|                            |security-

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-06-26 14:01 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-08  9:11 [Bug stdio/13822] New: fmemopen cannot handle wide chars polacek at redhat dot com
2012-10-25 12:47 ` [Bug stdio/13822] " siddhesh at redhat dot com
2012-10-25 12:55 ` siddhesh at redhat dot com
2012-10-25 13:11 ` polacek at redhat dot com
2012-10-25 13:21 ` siddhesh at redhat dot com
2012-10-25 18:12 ` bugdal at aerifal dot cx
2014-06-26 14:01 ` fweimer at redhat dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).