chunk: Add helper to copy a chunk left-padded to a certain length
[strongswan.git] / src / libstrongswan / utils / chunk.c
index 2393538..919b695 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008-2013 Tobias Brunner
+ * Copyright (C) 2008-2019 Tobias Brunner
  * Copyright (C) 2005-2006 Martin Willi
  * Copyright (C) 2005 Jan Hutter
  * HSR Hochschule fuer Technik Rapperswil
@@ -752,6 +752,26 @@ bool chunk_increment(chunk_t chunk)
        return TRUE;
 }
 
+/*
+ * Described in header
+ */
+chunk_t chunk_copy_pad(chunk_t dst, chunk_t src, u_char chr)
+{
+       if (dst.ptr)
+       {
+               if (dst.len > src.len)
+               {
+                       memcpy(dst.ptr + dst.len - src.len, src.ptr, src.len);
+                       memset(dst.ptr, chr, dst.len - src.len);
+               }
+               else
+               {
+                       memcpy(dst.ptr, src.ptr + src.len - dst.len, dst.len);
+               }
+       }
+       return dst;
+}
+
 /**
  * Remove non-printable characters from a chunk.
  */