diff options
author | Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com> | 2017-10-09 18:58:24 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2017-10-10 15:51:06 +0200 |
commit | 1adbd77cab6f60b105c5d8b1a4350161c3ac213d (patch) | |
tree | 0b559c2e9b14ebc19fb6ca197d1ba8c701508f52 | |
parent | 44499712954d7450262da9db4ee4219e40b1aaac (diff) | |
download | cygnal-1adbd77cab6f60b105c5d8b1a4350161c3ac213d.tar.gz cygnal-1adbd77cab6f60b105c5d8b1a4350161c3ac213d.tar.bz2 cygnal-1adbd77cab6f60b105c5d8b1a4350161c3ac213d.zip |
cygwin: fix potential buffer overflow in fork
When fork fails, we can use "%s" now with system_sprintf for the errmsg
rather than a (potentially too small) buffer for the format string.
* fork.cc (fork): Use "%s" with system_printf now.
-rw-r--r-- | winsup/cygwin/fork.cc | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index 73a72f530..bcbef12d8 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -618,13 +618,8 @@ fork () if (!grouped.errmsg) syscall_printf ("fork failed - child pid %d, errno %d", grouped.child_pid, grouped.this_errno); else - { - char buf[strlen (grouped.errmsg) + sizeof ("child %d - , errno 4294967295 ")]; - strcpy (buf, "child %d - "); - strcat (buf, grouped.errmsg); - strcat (buf, ", errno %d"); - system_printf (buf, grouped.child_pid, grouped.this_errno); - } + system_printf ("child %d - %s, errno %d", grouped.child_pid, + grouped.errmsg, grouped.this_errno); set_errno (grouped.this_errno); } |