@@ -167,20 +167,25 @@ static int log_dispatch(int level, const char *file, unsigned int line, const ch
167
167
168
168
int log_metav (int level , const char * file , unsigned int line , const char * func , const char * format , va_list ap )
169
169
{
170
-
171
- char buffer [LINE_MAX ];
170
+ char buffer [LINE_MAX ] = {0 };
172
171
int saved_errno , r ;
173
172
174
173
if (_likely_ (LOG_PRI (level ) > log_max_level ))
175
174
return 0 ;
176
175
177
176
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
+
179
183
char_array_0 (buffer );
180
184
181
185
r = log_dispatch (level , file , line , func , buffer );
182
- errno = saved_errno ;
183
186
187
+ end :
188
+ errno = saved_errno ;
184
189
return r ;
185
190
}
186
191
@@ -204,12 +209,12 @@ _noreturn_ static void log_assert(const char *text, const char *file, unsigned i
204
209
{
205
210
static char buffer [LINE_MAX ];
206
211
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
+ }
211
217
212
- log_dispatch (LOG_CRIT , file , line , func , buffer );
213
218
abort ();
214
219
}
215
220
0 commit comments