aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-08-16 15:11:51 +0200
committerMartin Willi <martin@revosec.ch>2010-08-16 17:06:27 +0200
commit806ec8b1d6e56c5d35f8dde80449399fd86186db (patch)
treec0b6fb8a09b75e6253ec68d4470b1597d065f32c
parente8bf9d6e16c6f91a9d5e7a0411c1bfc36b62d83a (diff)
downloadstrongswan-806ec8b1d6e56c5d35f8dde80449399fd86186db.tar.bz2
strongswan-806ec8b1d6e56c5d35f8dde80449399fd86186db.tar.xz
Properly handle zero length in chunk_alloc[a]/chunk_clone[a]
-rw-r--r--src/libstrongswan/chunk.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/libstrongswan/chunk.h b/src/libstrongswan/chunk.h
index 5441ccf3c..f94bdfbf2 100644
--- a/src/libstrongswan/chunk.h
+++ b/src/libstrongswan/chunk.h
@@ -193,12 +193,12 @@ static inline void chunk_clear(chunk_t *chunk)
/**
* Allocate a chunk on the heap
*/
-#define chunk_alloc(bytes) ({size_t x = (bytes); chunk_create(malloc(x), x);})
+#define chunk_alloc(bytes) ({size_t x = (bytes); chunk_create(x ? malloc(x) : NULL, x);})
/**
* Allocate a chunk on the stack
*/
-#define chunk_alloca(bytes) ({size_t x = (bytes); chunk_create(alloca(x), x);})
+#define chunk_alloca(bytes) ({size_t x = (bytes); chunk_create(x ? alloca(x) : NULL, x);})
/**
* Clone a chunk on heap
@@ -208,7 +208,7 @@ static inline void chunk_clear(chunk_t *chunk)
/**
* Clone a chunk on stack
*/
-#define chunk_clonea(chunk) ({chunk_t x = (chunk); chunk_create_clone(alloca(x.len), x);})
+#define chunk_clonea(chunk) ({chunk_t x = (chunk); chunk_create_clone(x.len ? alloca(x.len) : NULL, x);})
/**
* Concatenate chunks into a chunk on heap