Files
Cnomicon/src/libasn1/uper_stream.c
2021-01-22 10:16:20 -05:00

89 lines
2.8 KiB
C

/*****************************************************************************
* Copyright (C) 2004-2021
* ProbeStar Technical Systems, LLC
* All Rights Reserved. Proprietary and Confidential.
*============================================================================
*****************************************************************************/
/*****************************************************************************
* includes
*****************************************************************************/
#include <stdlib.h>
#include "embtypes.h"
#include "asn1uper.h"
/*****************************************************************************
* defines
*****************************************************************************/
/*****************************************************************************
* macros
*****************************************************************************/
/*****************************************************************************
* structs & typedefs
*****************************************************************************/
/*****************************************************************************
* global constants
*****************************************************************************/
/*****************************************************************************
* global variables
*****************************************************************************/
/*****************************************************************************
* static constants
*****************************************************************************/
/*****************************************************************************
* static variables
*****************************************************************************/
/*****************************************************************************
* static prototypes
*****************************************************************************/
/*****************************************************************************
* C functions
*****************************************************************************/
void uper_init_stream(UPER_Stream *strm, uint8_t *ptr, uint max)
{
if (strm && ptr && max) {
strm->buf = ptr;
strm->ptr = ptr;
strm->align = ASN1_UPER_ALIGNED;
strm->bit = 0;
strm->max = max;
strm->consumed = 0;
strm->error = 0;
}
}
UPER_Stream *uper_alloc_stream(uint8_t *ptr, uint max)
{
UPER_Stream *uper = (UPER_Stream*)calloc(1, sizeof(UPER_Stream));
if (uper) {
if (!ptr && max) {
ptr = (uint8_t*)calloc(max/8+1,1);
uper->alloc = 1;
}
uper_init_stream(uper, ptr, max);
}
return uper;
}
void uper_free_stream(UPER_Stream *uper)
{
if (uper) {
if (uper->buf && uper->alloc)
free(uper->buf);
free(uper);
}
}