From ac2433cb8daa1279d14f8b2cd4c7e1f3405787d4 Mon Sep 17 00:00:00 2001 From: Matt Johnston Date: Fri, 1 Apr 2022 12:10:48 +0800 Subject: [PATCH] Add m_snprintf() that won't return negative --- dbutil.c | 13 +++++++++++++ dbutil.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/dbutil.c b/dbutil.c index 588c8d0..bd66454 100644 --- a/dbutil.c +++ b/dbutil.c @@ -771,3 +771,16 @@ int fd_read_pending(int fd) { return FD_ISSET(fd, &fds); } } + +int m_snprintf(char *str, size_t size, const char *format, ...) { + va_list param; + int ret; + + va_start(param, format); + ret = vsnprintf(str, size, format, param); + va_end(param); + if (ret < 0) { + dropbear_exit("snprintf failed"); + } + return ret; +} diff --git a/dbutil.h b/dbutil.h index c2d384a..64af170 100644 --- a/dbutil.h +++ b/dbutil.h @@ -73,6 +73,8 @@ void m_close(int fd); void setnonblocking(int fd); void disallow_core(void); int m_str_to_uint(const char* str, unsigned int *val); +/* The same as snprintf() but exits rather than returning negative */ +int m_snprintf(char *str, size_t size, const char *format, ...); /* Used to force mp_ints to be initialised */ #define DEF_MP_INT(X) mp_int X = {0, 0, 0, NULL}