You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
947 B
29 lines
947 B
2 years ago
|
From 8ff11a8eccc41914478e92231500fc47fefa6779 Mon Sep 17 00:00:00 2001
|
||
|
From: Jonathan Wakely <boost@kayari.org>
|
||
|
Date: Wed, 10 Oct 2018 17:17:10 +0100
|
||
|
Subject: [PATCH] Fix memory leak
|
||
|
|
||
|
If vsnprintf returns -1 then the buffer should be freed before returning.
|
||
|
---
|
||
|
src/engine/debugger.c | 5 +++--
|
||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/src/engine/debugger.c b/src/engine/debugger.c
|
||
|
index 3c811b4557..d849d064a9 100644
|
||
|
--- a/tools/build/src/engine/debugger.c
|
||
|
+++ b/tools/build/src/engine/debugger.c
|
||
|
@@ -860,10 +860,11 @@ static const char * debug_format_message( const char * format, va_list vargs )
|
||
|
result = vsnprintf( buf, sz, format, args );
|
||
|
#endif
|
||
|
va_end( args );
|
||
|
+ if ( 0 <= result && result < sz )
|
||
|
+ return buf;
|
||
|
+ free( buf );
|
||
|
if ( result < 0 )
|
||
|
return 0;
|
||
|
- if ( result < sz ) return buf;
|
||
|
- free( buf );
|
||
|
sz = result + 1;
|
||
|
}
|
||
|
}
|