mailing list of musl libc
 help / color / mirror / code / Atom feed
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 --]

  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).