From: Raphael Cohn <raphael.cohn@stormmq.com>
To: musl@lists.openwall.com
Subject: Re: musl & strndupa?
Date: Wed, 1 Jan 2014 20:07:07 +0000 [thread overview]
Message-ID: <CACCP0Go-9Nb9tak9hW4bmd_7hhtsPDSWm5nZobnmc2T-FYeiCQ@mail.gmail.com> (raw)
In-Reply-To: <20140101195411.GP24286@brightrain.aerifal.cx>
[-- Attachment #1: Type: text/plain, Size: 2875 bytes --]
Rich,
Thank you for the extremely informative and quick response! I suspect in
the small, understandable places that use this function in this package it
should be possible to avoid multiple evaluations (well, at least for this
version of the code; no g'tee that would hold).
Out of interest, I presume there's no guarantee that alloca is aligned?
It's not a feature I've ever used - it seems like a micro-optimisation for
tight loops that should be made as part of a decision by a higher-level
language (eg Vala, which, as I understand, doesn't).
BTW, This package has a few more issues than just musl ones... it doesn't
understand cross-compilation for starters, makes insane use of code
generation (always a big smell in my book, especially when done using a
compiled language). Looks like it suffers from not enough peer review /
usage...
Raphael Cohn
Chief Architect, stormmq
Co-Chair, OASIS MQTT Standard
Secretary, OASIS AMQP Standard
raphael.cohn@stormmq.com
+44 7590 675 756
UK Office:
Hamblethorpe Farm, Crag Lane, Bradley BD20 9DB, North Yorkshire, United
Kingdom
Telephone: +44 845 3712 567
Registered office:
16 Anchor Street, Chelmsford, Essex, CM2 0JY, United Kingdom
StormMQ Limited is Registered in England and Wales under Company Number
07175657
StormMQ.com
On 1 January 2014 19:54, Rich Felker <dalias@aerifal.cx> wrote:
> On Wed, Jan 01, 2014 at 07:42:47PM +0000, Raphael Cohn wrote:
> > Hi,
> >
> > I'm trying to compile 'audit' (aka libaudit, auditd, etc - from
> > http://people.redhat.com/sgrubb/audit/index.html version 2.3.2). Using
> musl
> > 0.9.14.
> >
> > The file 'src/ausearch-lol.c' uses a reference to 'strndupa', which I
> > presume is an alloca version of strndup, and presumably a _GNU_SOURCE
> > feature. I can't seem to see a definition for it in musl, although
> strdupa
> > exists in string.h (Indeed, http://linux.die.net/man/3/strdup suggests
> as
> > much).
> >
> > Is this intentional? If so, what would anyone suggest as a work around?
> My
> > guess would be #define strndupa(x, t) strncpy(alloca(strlen(x)+1),x,t)
> > but I'd like a second opinion...
>
> That's roughly the way to do it, but you need strnlen, not strlen, and
> there are various other details like properly parenthesizing macro
> arguments. In addition, there's no way to avoid multiple-evaluations
> of arguments unless you use the GNU C statement-expressions extension.
>
> It should be noted that almost any use of alloca is either a bug
> (potentially exploitable stack overflow) or useless (because the size
> is bounded and thus could/should just be replaced by a fixed-size
> array). This is the main reason I've been hesitant to go to the
> trouble of providing this and dealing with the multiple-evaluation or
> #ifdef __GNUC__ issue -- really, any software using alloca (and by
> extension, strdupa or strndupa) should be fixed.
>
> Rich
>
[-- Attachment #2: Type: text/html, Size: 3907 bytes --]
next prev parent reply other threads:[~2014-01-01 20:07 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-01 19:42 Raphael Cohn
2014-01-01 19:54 ` Rich Felker
2014-01-01 20:07 ` Raphael Cohn [this message]
2014-01-01 20:18 ` Rich Felker
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=CACCP0Go-9Nb9tak9hW4bmd_7hhtsPDSWm5nZobnmc2T-FYeiCQ@mail.gmail.com \
--to=raphael.cohn@stormmq.com \
--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).