all repos — circe-vpn @ 6af25f7545c545d038b45921402dcdeed392c9d7

Circe VPN

common/memory.c (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
#include "memory.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

bool
circe_memory_equal (const uint8_t *a, const uint8_t *b, size_t len)
{
  uint8_t acc = 0x0;
  for (size_t i = 0; i < len; ++i)
    {
      acc |= a[i] ^ b[i];
    }
  return acc == 0x0;
}

void
circe_memory_copy (const uint8_t *restrict src, uint8_t *restrict dst,
                   size_t len)
{
  for (size_t i = 0; i < len; ++i)
    {
      dst[i] = src[i];
    }
}

void
circe_memory_set (uint8_t *dst, uint8_t value, size_t n)
{
  for (size_t i = 0; i < n; ++i)
    {
      dst[i] = value;
    }
}

void *
circe_memset (void *dest, int value, size_t count)
{
  circe_memory_set ((uint8_t *)dest, (uint8_t)value, count);
  return dest;
}

void *
circe_memcpy (void *restrict dest, const void *restrict src, size_t n)
{
  circe_memory_copy ((const uint8_t *restrict)src, (uint8_t *restrict)dest, n);
  return dest;
}