From ef49c3486a19368f444d55ed48dabb26751d8be9 Mon Sep 17 00:00:00 2001 From: Andreas Steffen Date: Tue, 27 Mar 2007 04:37:15 +0000 Subject: added chunk_compare() which compares orders chunks --- src/libstrongswan/chunk.c | 15 +++++++++++++++ src/libstrongswan/chunk.h | 6 ++++++ 2 files changed, 21 insertions(+) (limited to 'src') diff --git a/src/libstrongswan/chunk.c b/src/libstrongswan/chunk.c index f2c8a3efb..1967b350a 100644 --- a/src/libstrongswan/chunk.c +++ b/src/libstrongswan/chunk.c @@ -230,6 +230,21 @@ chunk_t chunk_skip(chunk_t chunk, size_t bytes) return chunk_empty; } +/** + * Described in header. + */ +int chunk_compare(chunk_t a, chunk_t b) +{ + int compare_len = a.len - b.len; + int len = (compare_len < 0)? a.len : b.len; + + if (compare_len != 0 || len == 0) + { + return compare_len; + } + return memcmp(a.ptr, b.ptr, len); +}; + /** * Described in header. */ diff --git a/src/libstrongswan/chunk.h b/src/libstrongswan/chunk.h index 7fa257b00..9880ae20f 100644 --- a/src/libstrongswan/chunk.h +++ b/src/libstrongswan/chunk.h @@ -123,6 +123,12 @@ void chunk_free(chunk_t *chunk); */ chunk_t chunk_skip(chunk_t chunk, size_t bytes); +/** + * Compare two chunks, returns zero if a equals b + * or negative/positive if a is small/greater than b + */ +int chunk_compare(chunk_t a, chunk_t b); + /** * Compare two chunks for equality, * NULL chunks are never equal. -- cgit v1.2.3