|
|
Message-ID:
<DM4PR12MB62074B95160717EB43FFB21780419@DM4PR12MB6207.namprd12.prod.outlook.com>
Date: Wed, 7 Sep 2022 18:53:06 +0000
From: "Knott, Isabelle" <Isabelle.Knott@....com>
To: "musl@...ts.openwall.com" <musl@...ts.openwall.com>
Subject: [bug] Cannot fprintf/fwprintf numbers to a wmemstream
[AMD Official Use Only - General]
Hello, I have found that fprintf or fwprintf fails to write numbers to wmemstreams specifically, and also incorrectly reports how many characters were actually written:
Here is some sample code that reproduces the issue
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
int main() {
wchar_t* buf;
size_t buf_size;
FILE* fd = open_wmemstream(&buf, &buf_size);
if(fd == 0)
{
return -1;
}
//int chars_written = fprintf(fd, "%d", 40); // this also doesn't work
int chars_written = fwprintf(fd, L"%d", 40);
fclose(fd);
printf("chars_written: %d\n", chars_written);
printf("buf_size: %ld\n", buf_size);
fwprintf(stdout, L"expected: \"%d\"\n", 40);
printf("actual: \"%ls\"\n", buf);
free(buf);
return 0;
}
with musl-gcc compiles from 1.2.3:
chars_written: 2
buf_size: 0
expected: "40"
actual: ""
with glibc 2.35, using fprintf on the wmemstream fails, but fwprintf succeeds, though it won't write to stdout for some reason:
chars_written: 2
buf_size: 2
actual: "40"
Thanks!
-Isabelle
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.