Skip to content

Commit 19537f8

Browse files
sshedijohannbg
authored andcommitted
fix(install): validate return values log.c
Signed-off-by: Shreenidhi Shedi <[email protected]>
1 parent b5cf7ec commit 19537f8

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/install/log.c

+14-9
Original file line numberDiff line numberDiff line change
@@ -167,20 +167,25 @@ static int log_dispatch(int level, const char *file, unsigned int line, const ch
167167

168168
int log_metav(int level, const char *file, unsigned int line, const char *func, const char *format, va_list ap)
169169
{
170-
171-
char buffer[LINE_MAX];
170+
char buffer[LINE_MAX] = {0};
172171
int saved_errno, r;
173172

174173
if (_likely_(LOG_PRI(level) > log_max_level))
175174
return 0;
176175

177176
saved_errno = errno;
178-
vsnprintf(buffer, sizeof(buffer), format, ap);
177+
178+
r = vsnprintf(buffer, sizeof(buffer), format, ap);
179+
if (r <= 0) {
180+
goto end;
181+
}
182+
179183
char_array_0(buffer);
180184

181185
r = log_dispatch(level, file, line, func, buffer);
182-
errno = saved_errno;
183186

187+
end:
188+
errno = saved_errno;
184189
return r;
185190
}
186191

@@ -204,12 +209,12 @@ _noreturn_ static void log_assert(const char *text, const char *file, unsigned i
204209
{
205210
static char buffer[LINE_MAX];
206211

207-
snprintf(buffer, sizeof(buffer), format, text, file, line, func);
208-
209-
char_array_0(buffer);
210-
log_abort_msg = buffer;
212+
if (snprintf(buffer, sizeof(buffer), format, text, file, line, func) > 0) {
213+
char_array_0(buffer);
214+
log_abort_msg = buffer;
215+
log_dispatch(LOG_CRIT, file, line, func, buffer);
216+
}
211217

212-
log_dispatch(LOG_CRIT, file, line, func, buffer);
213218
abort();
214219
}
215220

0 commit comments

Comments
 (0)