Commit Graph

49 Commits

Author SHA1 Message Date
apb
bfdedd98f6 Make strnlen implementation usable from src/tools/compat. 2014-01-09 11:25:11 +00:00
christos
96602b9efa make it kernel friendly. 2013-12-27 20:26:53 +00:00
christos
967db62434 kernel needs it now too. 2013-12-27 20:24:45 +00:00
joerg
96f5bbd28d Improve EABI handling of string functions. Most importantly, fix
__aeabi_memset, which has the arguments in the wrong order.
2013-12-02 21:21:33 +00:00
riastradh
3db7caeeb3 Comment on possible data-dependent branch in `!res'. 2013-08-28 19:31:14 +00:00
riastradh
1239c2bb08 Publish explicit_memset and consttime_memequal in userland libc.
Remove the double-underscore from the userland versions, and do the
weak alias dance instead, now that these are public parts of libc.

As discussed on tech-userlevel:

https://mail-index.netbsd.org/tech-userlevel/2013/06/24/msg007843.html
(option 3)
2013-08-28 17:47:07 +00:00
riastradh
495fdb7e9a Make explicit_memset match memset's return value. 2013-08-28 15:46:23 +00:00
riastradh
cc79193075 Fix sense of consttime_memequal and update all callers.
Now it returns true (nonzero) to mean equal and false (zero) to mean
inequal, as the name suggests.

As promised on tech-userlevel back in June:

https://mail-index.netbsd.org/tech-userlevel/2013/06/24/msg007843.html
2013-08-28 15:24:41 +00:00
joerg
e49f3fb2ce Don't pick up strcmp as macro from libkern.h. 2013-07-01 20:51:59 +00:00
riastradh
82db4b9858 Replace consttime_bcmp/explicit_bzero by consttime_memequal/explicit_memset.
consttime_memequal is the same as the old consttime_bcmp.
explicit_memset is to memset as explicit_bzero was to bcmp.

Passes amd64 release and i386/ALL, but I'm sure I missed some spots,
so please let me know.
2013-06-24 04:21:19 +00:00
matt
cd7877eb52 Add a (unused) variant of strlcat that uses strnlen and strlcpy to do the work. 2013-01-23 07:57:27 +00:00
drochner
8588929dc5 Add "consttime_bcmp" and "explicit_bzero" functions for both kernel
abd userland, as proposed on tech-security, with explicit_bzero using
a volatile function pointer as suggested by Alan Barrett.
Both do what the name says. For userland, both are prefixed by "__"
to keep them out of the user namespace.
Change some memset/memcmp uses to the new functions where it makes
sense -- these are just some examples, more to come.
2012-08-30 12:16:48 +00:00
christos
a5fd370a21 Casts and type changes to fix portability issues.
- int -> size_t
- adjust width of RHS of shift
- adjust widths of types
2012-03-09 15:41:16 +00:00
apb
aaa101ee8d remove trailing white space 2012-03-02 16:22:27 +00:00
apb
2953114330 Change CTASSERT to __CTASSERT (the spelling used in <sys/cdefs.h>),
include <sys/cdefs.h> so that it will be defined,
and move it to a better place.

The previous CTASSERT would never have been used because
of the ifdef.  If it had been used, it would have had
unwanted effects from being just after the "static inline"
that appears when BZERO is defined.

Also move the __RCSID to a more conventional location.
2012-03-02 16:19:15 +00:00
joerg
4041630e67 libkern.h maps memcmp, memset and strcpy to the compiler builtins on
some platforms, so make sure to #undef them first.
2011-11-08 16:52:11 +00:00
jym
b0471da334 Make strnlen(3) accessible in kernel. ok christos@. 2011-09-01 22:35:17 +00:00
plunky
a9b219be41 NULL does not need a cast 2011-08-31 15:48:32 +00:00
dholland
0a54ac30f5 Requires stdint.h. 2011-08-21 21:24:34 +00:00
mrg
baa3508234 add a weak alias to __ffssi2, needed for hppa gcc 4.5. 2011-08-07 01:52:47 +00:00
matt
8daf714e68 Merge from matt-nb5-mips64 2009-12-14 00:38:59 +00:00
joerg
0c2684fa82 Fix a comment to not be self-referencing. 2009-08-05 15:04:15 +00:00
drochner
8e73e87c59 remove stray semicolons, makes lint happy and lets the libc build proceed 2009-07-21 19:56:55 +00:00
joerg
11e383c9e8 Include limits.h. 2009-07-21 17:37:51 +00:00
joerg
cb19415914 Make the constant u_longlong too, lint is just too stupid... 2009-07-21 17:14:12 +00:00
joerg
9a4b5deb76 Add explicit casts to make lint happy. 2009-07-21 16:10:48 +00:00
joerg
0578c2ad0f Move popcount et al to src/common and add popcount32/popcount64.
Requested by rmind@. MD should now override popcount32/popcount64 and
provide the aliases as fitting.
2009-07-21 14:55:32 +00:00
dsl
53a0f227e6 Change all archs so that strchr.[cS] and strrchr.[cS] exist and generate
duplicate symbols for index() and rindex().
2009-07-17 19:37:57 +00:00
skrll
0e68e44118 Only include <assert.h> and <string.h> if !_KERNEL && !_STANDALONE 2009-04-25 12:20:48 +00:00
he
d8d70d1b63 Actually... We need libkern.h also under _STANDALONE, so that
_DIAGASSERT gets defined.  Fixes the mvmeppc libsa build.
2009-03-19 08:39:54 +00:00
tsutsui
d0b9e6c924 - remove bcmp(9), bcopy(9), and bzero(9) from libkern since <sys/systm.h> has
macro which replace them with mem*() functions in #ifdef _KERNEL as noted
  in man pages
- move declarations of bcopy(3) and bzero(3) into <lib/libsa/stand.h>
  since they are still in libsa for some MD standalone sources
  (I guess all bcmp(3) in standalone sources have been replaced with memcmp(3)
   but they should be replaced with memcmp() anyway)
2009-03-18 12:25:06 +00:00
he
245ee9af71 Add local declarations of bcmp() and bzero() because libkern.h no longer
provides those declarations.

It's possible that these can be removed later when we find out whether
these functions are actually needed in the kernel, but meanwhile, this
allows alpha, hp700 and the powerpc ports (who all build these as part
of libkern) to complete their builds.
2009-03-17 23:42:45 +00:00
he
73e50f111b Do like the non-__OPTIMIZE_SIZE__ variant, and compile memset() unless
BZERO is defined, instead of requiring MEMSET to be defined.

Avoids violating the principle of least astonishment, and also fixes
the build of stand/ and kernels for (at least) alpha.
2008-03-29 14:03:22 +00:00
he
a58a2cddc0 Make the size-optimized memset() actually conform to the man page
by returning the first arg.
2008-03-29 12:25:32 +00:00
apb
f5c2801052 Add /* __OPTIMIZE_SIZE__ */ comments on relevant #else and #endif lines.
Also change some #ifdef to #if defined() for consistency.
2008-03-26 06:19:36 +00:00
christos
9f2bc34fb9 bcopy does not return ptr. 2008-03-25 23:23:34 +00:00
christos
93f951ce0d fix #ifdefs for BCOPY 2008-03-25 23:16:29 +00:00
christos
985a3d11e8 add bcopy and bzero for the benefit of loadfile. 2008-03-25 23:13:15 +00:00
christos
9e32ad04aa add __OPTIMIZE_SIZE__ versions. 2008-03-25 21:22:37 +00:00
martin
ececdb7913 When passing char (or unsigned char) arguments as int, assign them to a
temporary char (resp. unsigned char) before comparing, to force truncation
to the proper domain. This makes the coresponding regression tests succeed.
2008-01-08 21:57:06 +00:00
christos
2f1af36850 use the ffs32 from bitops.h which is faster 2007-11-02 21:05:06 +00:00
christos
a8565cf99b handle fortify, ansify. 2007-06-04 18:19:26 +00:00
christos
1418345039 Make these work with _FORTIFY_SOURCE, by overriding the fortified definitions 2007-06-03 17:39:26 +00:00
chs
d210472073 don't do the weak symbol thing in kernel context. 2007-02-19 18:33:09 +00:00
dyoung
e3361bb265 Add strsep(3) to libkern.
To avoid code duplication, move strsep.c to the kernel/userland
common files.

Soon I will commit source-address selection (options IPSELSRC).
It will use strsep(3).
2006-11-13 03:26:43 +00:00
christos
7c73c7d9b9 remove bogus _LIBC defines. broke lint. 2006-03-30 20:37:51 +00:00
martin
d5e6ed8907 Enforce argument domain by assigning to a char variable and searching
for that. This way we pass the lib/libc/string/strrchr regression tests.
2006-03-13 15:41:46 +00:00
ross
b8bbfca272 Don't do DIAGASSERT against NULL if _KERNEL This puts us back to
kernel behavior before src/common where 0 was a valid dest addr.

This should fix the macppc (and other OEA ppc) silent-death-on-DIAGNOSTIC
issue, and possibly other DIAGNOSTIC failures.

XXX it might be worth thinking about an API where 0 is allowed in
documented cases and not allowed otherwise.
2006-02-05 06:47:48 +00:00
christos
37c9f0a654 Merge libkern + libc common files. As requested by core. 2005-12-20 19:28:49 +00:00