px-fwlib 0.10.0
Cross-platform embedded library and documentation for 8/16/32-bit microcontrollers generated with Doxygen 1.9.2
px_sbuf.h : Safe buffer string appending functions that avoid overflow

Description

Safe buffer string appending functions that avoid overflow.

File(s):

This module provides a mechanism to provide a fixed size character buffer and append characters and strings safely and avoiding buffer overflows.

Example:

#include <stdio.h>
#include <string.h>
#include "px_sbuf.h"
int main(void)
{
px_sbuf_t sbuf;
char buf[16];
// Test 1. Fill buffer with magic values to detect buffer overflow
memset(buf, 0xcc, sizeof(buf));
// Initialise safe buffer
px_sbuf_init(&sbuf, buf, 8);
// Append formatted strings
px_sbuf_printf(&sbuf, "%u", 1234);
px_sbuf_printf(&sbuf, "%u", 56789);
// Report result
printf("%s\n", sbuf.buf);
// Test 2. Fill buffer with magic values to detect buffer overflow
memset(buf, 0xcc, sizeof(buf));
// Reset safe buffer
px_sbuf_reset(&sbuf);
// Append characters
for(int i = 0; i < 16; i++)
{
px_sbuf_putchar(&sbuf, '0' + i);
}
// Report result
printf("%s\n", sbuf.buf);
// Test 3. Fill buffer with magic values to detect buffer overflow
memset(buf, 0xcc, sizeof(buf));
// Reset safe buffer
px_sbuf_reset(&sbuf);
// Append strings
px_sbuf_print(&sbuf, "01234");
px_sbuf_print(&sbuf, "56789");
// Report result
printf("%s\n", sbuf.buf);
// Loop forever
while(true) {;}
}
char * buf
Pointer to character buffer.
Definition: px_sbuf.h:54
void px_sbuf_putchar(px_sbuf_t *sbuf, char c)
Append a character to safe buffer.
Definition: px_sbuf.c:77
void px_sbuf_reset(px_sbuf_t *sbuf)
Reset safe buffer.
Definition: px_sbuf.c:47
void px_sbuf_printf(px_sbuf_t *sbuf, const char *format,...)
Append a formatted string to safe buffer.
Definition: px_sbuf.c:131
void px_sbuf_print(px_sbuf_t *sbuf, const char *str)
Append a string to safe buffer.
Definition: px_sbuf.c:98
void px_sbuf_init(px_sbuf_t *sbuf, char *buf, size_t buf_size)
Initialise safe buffer.
Definition: px_sbuf.c:39

Data Structures

struct  px_sbuf_t
 

Functions

void px_sbuf_init (px_sbuf_t *sbuf, char *buf, size_t buf_size)
 Initialise safe buffer. More...
 
void px_sbuf_reset (px_sbuf_t *sbuf)
 Reset safe buffer. More...
 
bool px_sbuf_is_empty (const px_sbuf_t *sbuf)
 Is safe buffer empty? More...
 
bool px_sbuf_is_full (const px_sbuf_t *sbuf)
 Is safe buffer full. More...
 
void px_sbuf_putchar (px_sbuf_t *sbuf, char c)
 Append a character to safe buffer. More...
 
void px_sbuf_puts (px_sbuf_t *sbuf, const char *str)
 Append a string and newline character to safe buffer. More...
 
void px_sbuf_print (px_sbuf_t *sbuf, const char *str)
 Append a string to safe buffer. More...
 
void px_sbuf_printf (px_sbuf_t *sbuf, const char *format,...)
 Append a formatted string to safe buffer. More...
 

Data Structure Documentation

◆ px_sbuf_t

struct px_sbuf_t

Definition at line 52 of file px_sbuf.h.

Data Fields
char * buf Pointer to character buffer.
size_t buf_size Size of character buffer.
size_t index Index of next character to be copied into buffer.

Function Documentation

◆ px_sbuf_init()

void px_sbuf_init ( px_sbuf_t sbuf,
char *  buf,
size_t  buf_size 
)

Initialise safe buffer.

Parameters
sbufPointer to safe buffer object
bufPointer to character buffer
buf_sizeSize of character buffer

Definition at line 39 of file px_sbuf.c.

◆ px_sbuf_reset()

void px_sbuf_reset ( px_sbuf_t sbuf)

Reset safe buffer.

Parameters
sbufPointer to buffer object

Definition at line 47 of file px_sbuf.c.

◆ px_sbuf_is_empty()

bool px_sbuf_is_empty ( const px_sbuf_t sbuf)

Is safe buffer empty?

Parameters
sbufPointer to safe buffer object
Return values
truesafe buffer is empty
falsesafe buffer is not empty

Definition at line 53 of file px_sbuf.c.

◆ px_sbuf_is_full()

bool px_sbuf_is_full ( const px_sbuf_t sbuf)

Is safe buffer full.

Parameters
sbufPointer to safe buffer object
Return values
truesafe buffer is full
falsesafe buffer is empty

Definition at line 65 of file px_sbuf.c.

◆ px_sbuf_putchar()

void px_sbuf_putchar ( px_sbuf_t sbuf,
char  c 
)

Append a character to safe buffer.

Parameters
sbufPointer to safe buffer object
cCharacter to append

Definition at line 77 of file px_sbuf.c.

◆ px_sbuf_puts()

void px_sbuf_puts ( px_sbuf_t sbuf,
const char *  str 
)

Append a string and newline character to safe buffer.

Parameters
sbufPointer to safe buffer object
strString to append

Definition at line 92 of file px_sbuf.c.

◆ px_sbuf_print()

void px_sbuf_print ( px_sbuf_t sbuf,
const char *  str 
)

Append a string to safe buffer.

Parameters
sbufPointer to safe buffer object
strString to append

Definition at line 98 of file px_sbuf.c.

◆ px_sbuf_printf()

void px_sbuf_printf ( px_sbuf_t sbuf,
const char *  format,
  ... 
)

Append a formatted string to safe buffer.

Parameters
sbufPointer to safe buffer object
formatPrintf format string

Definition at line 131 of file px_sbuf.c.