From: Bernhard Voelker <mail@bernhard-voelker.de>
To: Sami Kerola <kerolasa@iki.fi>, util-linux@vger.kernel.org
Subject: Re: [PATCH 01/12] include/xalloc: ensure arithmetics overflow cannot happen
Date: Sun, 27 Apr 2014 22:45:25 +0200 [thread overview]
Message-ID: <535D6C65.50006@bernhard-voelker.de> (raw)
In-Reply-To: <1398629138-31718-2-git-send-email-kerolasa@iki.fi>
On 04/27/2014 10:05 PM, Sami Kerola wrote:
> The xrealloc() changes has the greatest change. It splits the size and
> multiplier arguments so that arithmetics overflow can be detected. This
> change is propagated to use of the function in other files.
>
> Additionally this change checks that size inputs for allocations are
> never zero. It is uncertain if in these cases abort() should be called
> to get a core.
I'd favor to see the behavior of the allocation functions to be harmonized
with gnulib: quite a couple of us guys may work in projects using it, thus
being familiar with its details and corner cases.
WDYT?
> The xstrdup() is made to use memcpy(), which is exactly what the library
> call does so one layer of absraction is saved here.
...
> static inline char __attribute__((warn_unused_result)) *xstrdup(const char *str)
> {
> - char *ret;
> -
> - if (!str)
> - return NULL;
> -
> - ret = strdup(str);
> + size_t len;
> + char *ret;
>
> - if (!ret)
> - err(XALLOC_EXIT_CODE, "cannot duplicate string");
> - return ret;
> + if (!str)
> + return NULL;
> + len = strlen(str) + 1;
> + ret = xmalloc(len);
> + memcpy(ret, str, len);
> + return ret;
> }
Hmm, while memcpy() alone is faster than strcpy(), replacing the
latter by strlen() + memcpy() certainly is not. The compilers and
libc are optimized enough, e.g. by using had-crafted assembler code,
that I think you don't have a chance to be faster by trying to be
smarter than them.
Have a nice day,
Berny
next prev parent reply other threads:[~2014-04-27 20:45 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-27 20:05 [PATCH 00/12] pull: mostly swap command clarifications Sami Kerola
2014-04-27 20:05 ` [PATCH 01/12] include/xalloc: ensure arithmetics overflow cannot happen Sami Kerola
2014-04-27 20:45 ` Bernhard Voelker [this message]
2014-04-28 6:52 ` Karel Zak
2014-04-28 8:42 ` Sami Kerola
2014-04-27 20:05 ` [PATCH 02/12] dmesg: move get_boot_time() to lib/timeutils Sami Kerola
2014-05-06 10:00 ` Ruediger Meier
2014-05-06 11:20 ` Karel Zak
2014-05-06 13:42 ` Ruediger Meier
2014-05-06 14:40 ` Karel Zak
2014-05-06 16:03 ` Ruediger Meier
2014-05-07 9:52 ` Karel Zak
2014-05-07 14:04 ` Ruediger Meier
2014-04-27 20:05 ` [PATCH 03/12] last: fix is_phantom() detection Sami Kerola
2014-04-27 20:05 ` [PATCH 04/12] include/c.h: add macro to print definitions as string Sami Kerola
2014-04-27 20:05 ` [PATCH 05/12] mkswap, swaplabel: move version number to header Sami Kerola
2014-04-27 20:05 ` [PATCH 06/12] mkswap: remove legacy swap structure Sami Kerola
2014-04-27 20:05 ` [PATCH 07/12] include/swapheader.h: ensure type sizes Sami Kerola
2014-04-27 20:05 ` [PATCH 08/12] swapon: swaps with legacy version label are not supported Sami Kerola
2014-04-28 8:37 ` Benno Schulenberg
2014-04-28 8:44 ` Sami Kerola
2014-04-28 9:00 ` Karel Zak
2014-04-27 20:05 ` [PATCH 09/12] swapon, swapheader, mkswap: move swap signature to header Sami Kerola
2014-04-27 20:05 ` [PATCH 10/12] libsmartcols: remove ununsed assignment Sami Kerola
2014-04-28 9:02 ` Karel Zak
2014-04-27 20:05 ` [PATCH 11/12] lib/timeutils: fix memory leak Sami Kerola
2014-04-27 20:05 ` [PATCH 12/12] lib/pager: use names when referring to standard file descriptors Sami Kerola
2014-04-29 21:05 ` [PATCH 00/12] pull: mostly swap command clarifications Sami Kerola
2014-04-29 21:46 ` Bernhard Voelker
2014-05-06 8:36 ` Karel Zak
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=535D6C65.50006@bernhard-voelker.de \
--to=mail@bernhard-voelker.de \
--cc=kerolasa@iki.fi \
--cc=util-linux@vger.kernel.org \
/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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox