projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
getservbyport_r: fix out-of-bounds buffer read
[musl]
/
src
/
stdio
/
perror.c
diff --git
a/src/stdio/perror.c
b/src/stdio/perror.c
index
fdcb4d7
..
d0943f2
100644
(file)
--- a/
src/stdio/perror.c
+++ b/
src/stdio/perror.c
@@
-9,6
+9,11
@@
void perror(const char *msg)
char *errstr = strerror(errno);
FLOCK(f);
char *errstr = strerror(errno);
FLOCK(f);
+
+ /* Save stderr's orientation and encoding rule, since perror is not
+ * permitted to change them. */
+ void *old_locale = f->locale;
+ int old_mode = f->mode;
if (msg && *msg) {
fwrite(msg, strlen(msg), 1, f);
if (msg && *msg) {
fwrite(msg, strlen(msg), 1, f);
@@
-18,5
+23,8
@@
void perror(const char *msg)
fwrite(errstr, strlen(errstr), 1, f);
fputc('\n', f);
fwrite(errstr, strlen(errstr), 1, f);
fputc('\n', f);
+ f->mode = old_mode;
+ f->locale = old_locale;
+
FUNLOCK(f);
}
FUNLOCK(f);
}