From: Szabolcs Nagy <nsz@port70.net>
To: musl@lists.openwall.com
Subject: Re: Weird bug in syslog
Date: Wed, 20 Mar 2013 13:41:26 +0100 [thread overview]
Message-ID: <20130320124125.GL19010@port70.net> (raw)
In-Reply-To: <1363721555.2099.0@eros>
* William Haddon <william@haddonthethird.net> [2013-03-19 15:32:35 -0400]:
> I noticed seg-faults and other weird behavior when using the syslog()
> function with large messages. I've attached the simplest test program
> that reproduces the problem. I've observed it to break on 0.9.9 on i386
> and current git on x86_64. The problem seems to be that although the
> syslog function successfully truncates its input to 256 bytes, it
> passes the size of the un-truncated form to the sendto() call because
> snprintf returns the number of bytes that would be written if
> truncation did not occur. Fixing syslog to check if truncation occurred
> seems to fix the problem. I've attached the patch that does this.
i can confirm this
> Report the correct length of the datagram to the kernel to fix strange behavior
> in the syslog function.
> --- musl-0.9.9/src/misc/syslog.c
> +++ src/src/misc/syslog.c
> @@ -90,9 +90,11 @@
> priority, timebuf,
> log_ident ? log_ident : "",
> "["+!pid, pid, "]"+!pid);
> + if (l > sizeof buf) l = sizeof buf - 1;
l >= sizeof buf
(it is not correct when l<0 but that snprintf cannot fail)
> l2 = vsnprintf(buf+l, sizeof buf - l, message, ap);
> if (l2 >= 0) {
> l += l2;
these are int values
maybe we should care about overflow
(eg making l size_t works)
> + if (l > sizeof buf) l = sizeof buf - 1;
l >= sizeof buf
> if (buf[l-1] != '\n') buf[l++] = '\n';
> sendto(log_fd, buf, l, 0, (void *)&log_addr, 11);
> }
>
next prev parent reply other threads:[~2013-03-20 12:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-19 19:32 William Haddon
2013-03-20 12:41 ` Szabolcs Nagy [this message]
2013-03-20 18:55 ` Szabolcs Nagy
2013-03-20 19:02 ` Rich Felker
2013-03-21 1:43 ` William Haddon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130320124125.GL19010@port70.net \
--to=nsz@port70.net \
--cc=musl@lists.openwall.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
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 NNTP newsgroup(s).