Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 20 additions & 18 deletions erpc_c/port/erpc_sysgpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,17 @@
#include <string.h>
#include <unistd.h>

#define SYSGPIO_LEN (64U)

int gpio_export(int gpio)
{
int fd = 0;
char sysgpio[64];
char sysgpio[SYSGPIO_LEN];
int ret;

/* Check if the gpio has already been exported */
ret = sprintf(sysgpio, "/sys/class/gpio/gpio%d/value", gpio);
if (ret >= 0)
ret = snprintf(sysgpio, SYSGPIO_LEN, "/sys/class/gpio/gpio%d/value", gpio);
if ((ret >= 0) && (ret < SYSGPIO_LEN))
{
fd = open(sysgpio, O_WRONLY);
if (-1 != fd)
Expand All @@ -44,10 +46,10 @@ int gpio_export(int gpio)
}
else
{
ret = sprintf(sysgpio, "%d", gpio);
if (ret >= 0)
ret = snprintf(sysgpio, SYSGPIO_LEN, "%d", gpio);
if ((ret >= 0) && (ret < SYSGPIO_LEN))
{
if (strlen(sysgpio) != write(fd, sysgpio, strlen(sysgpio)))
if (ret != write(fd, sysgpio, ret))
{
(void)fprintf(stderr, "Could not export gpio (%d) (%d).\r\n", gpio, errno);
ret = -2;
Expand All @@ -67,11 +69,11 @@ int gpio_export(int gpio)
int gpio_direction(int gpio, int direction)
{
int fd;
char sysgpio[64];
char sysgpio[SYSGPIO_LEN];
int ret;

ret = sprintf(sysgpio, "/sys/class/gpio/gpio%d/direction", gpio);
if (ret >= 0)
ret = snprintf(sysgpio, SYSGPIO_LEN, "/sys/class/gpio/gpio%d/direction", gpio);
if ((ret >= 0) && (ret < SYSGPIO_LEN))
{
ret = ERPC_SYSGPIO_STATUS_SUCCESS;
fd = open(sysgpio, O_WRONLY | O_SYNC);
Expand Down Expand Up @@ -117,12 +119,12 @@ int gpio_direction(int gpio, int direction)
int gpio_set_edge(int gpio, char *edge)
{
int fd;
char sysgpio[64];
char sysgpio[SYSGPIO_LEN];
unsigned char len;
int ret;

ret = sprintf(sysgpio, "/sys/class/gpio/gpio%d/edge", gpio);
if (ret >= 0)
ret = snprintf(sysgpio, SYSGPIO_LEN, "/sys/class/gpio/gpio%d/edge", gpio);
if ((ret >= 0) && (ret < SYSGPIO_LEN))
{
fd = open(sysgpio, O_WRONLY | O_SYNC);
if (-1 == fd)
Expand Down Expand Up @@ -153,12 +155,12 @@ int gpio_set_edge(int gpio, char *edge)
int gpio_read(int gpio)
{
int fd;
char sysgpio[64];
char sysgpio[SYSGPIO_LEN];
char in[2];
int ret;

ret = sprintf(sysgpio, "/sys/class/gpio/gpio%d/value", gpio);
if (ret >= 0)
ret = snprintf(sysgpio, SYSGPIO_LEN, "/sys/class/gpio/gpio%d/value", gpio);
if ((ret >= 0) && (ret < SYSGPIO_LEN))
{
fd = open(sysgpio, O_RDWR | O_SYNC);
if (-1 == fd)
Expand Down Expand Up @@ -189,12 +191,12 @@ int gpio_read(int gpio)
int gpio_open(int gpio)
{
int fd;
char sysgpio[64];
char sysgpio[SYSGPIO_LEN];
char in;
int ret;

ret = sprintf(sysgpio, "/sys/class/gpio/gpio%d/value", gpio);
if (ret >= 0)
ret = snprintf(sysgpio, SYSGPIO_LEN, "/sys/class/gpio/gpio%d/value", gpio);
if ((ret >= 0) && (ret < SYSGPIO_LEN))
{
fd = open(sysgpio, O_RDWR | O_SYNC);
if (-1 == fd)
Expand Down
5 changes: 3 additions & 2 deletions erpcgen/src/erpcgen_lexer.l
Original file line number Diff line number Diff line change
Expand Up @@ -280,8 +280,9 @@ void { return TOK_VOID; }

<*>. {
/* all other chars produce errors */
char msg[50];
sprintf(msg, "unexpected character '%c' on line %d", yytext[0], yylineno);
const uint8_t msgLen = 50;
char msg[msgLen];
(void)snprintf(msg, msgLen, "unexpected character '%c' on line %d", yytext[0], yylineno);
LexerError(msg);
}

Expand Down