about summary refs log tree commit diff
path: root/src/malloc/posix_memalign.c
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-07-04 23:54:12 -0400
committerRich Felker <dalias@aerifal.cx>2013-07-04 23:54:12 -0400
commit651416182dc65d75e91cadfec65dd72f9ff07846 (patch)
tree4f1a085a262cb195f1fab6a27b7f0335b35712fc /src/malloc/posix_memalign.c
parentab724204393bcc990d519b1358f4ec3ee1f3a570 (diff)
downloadmusl-651416182dc65d75e91cadfec65dd72f9ff07846.tar.gz
musl-651416182dc65d75e91cadfec65dd72f9ff07846.tar.xz
musl-651416182dc65d75e91cadfec65dd72f9ff07846.zip
move alignment check from aligned_alloc to posix_memalign
C11 has no requirement that the alignment be a multiple of
sizeof(void*), and in fact seems to require any "valid alignment
supported by the implementation" to work. since the alignment of char
is 1 and thus a valid alignment, an alignment argument of 1 should be
accepted.
Diffstat (limited to 'src/malloc/posix_memalign.c')
-rw-r--r--src/malloc/posix_memalign.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/malloc/posix_memalign.c b/src/malloc/posix_memalign.c
index 42cf2740..ad4d8f47 100644
--- a/src/malloc/posix_memalign.c
+++ b/src/malloc/posix_memalign.c
@@ -3,6 +3,7 @@
 
 int posix_memalign(void **res, size_t align, size_t len)
 {
+	if (align < sizeof(void *)) return EINVAL;
 	void *mem = aligned_alloc(align, len);
 	if (!mem) return errno;
 	*res = mem;