view list.c @ 1705:5b701bf529aa

Fix ChaCha20 on 32-bit platforms (#99) * Fix ChaCha20 on 32-bit platforms On 32-bit platforms with old compiler STORE64H() parameter is not auto-expanded to 64-bit value, causing wrong IV data. Spotted on BCM4706 MIPS32r2 with GCC 4.2.4: Exit before auth: Integrity error (bad packet size 2065808956) * Fix Chacha20-Poly1305 and AES-GCM debug messages Functions were renamed earlier and trace messages - not.
author Vladislav Grishenko <themiron@users.noreply.github.com>
date Fri, 29 May 2020 18:26:22 +0500
parents d68d61e7056a
children
line wrap: on
line source

#include "includes.h"
#include "dbutil.h"
#include "list.h"

void list_append(m_list *list, void *item) {
	m_list_elem *elem;
	
	elem = m_malloc(sizeof(*elem));
	elem->item = item;
	elem->list = list;
	elem->next = NULL;
	if (!list->first) {
		list->first = elem;
		elem->prev = NULL;
	} else {
		elem->prev = list->last;
		list->last->next = elem;
	}
	list->last = elem;
}

m_list * list_new() {
	m_list *ret = m_malloc(sizeof(m_list));
	ret->first = ret->last = NULL;
	return ret;
}

void * list_remove(m_list_elem *elem) {
	void *item = elem->item;
	m_list *list = elem->list;
	if (list->first == elem)
	{
		list->first = elem->next;
	}
	if (list->last == elem)
	{
		list->last = elem->prev;
	}
	if (elem->prev)
	{
		elem->prev->next = elem->next;
	}
	if (elem->next)
	{
		elem->next->prev = elem->prev;
	}
	m_free(elem);
	return item;
}