From 4a7c6aaedfb083df202cc076c4ae856ff5aded03 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 12 Jan 2015 14:43:52 +0100 Subject: bstr: fix possible undefined behavior with length 0 strings BSTR_P() passes the string length and start pointer to printf-like functions. If the lenfth is 0, the pointer can be NULL, but we're actually still not allowed to pass a NULL pointer in any case. This is mostly a technically, because nobody in their right mind would attempt to specifically break such cases. But it's still undefined behavior, and some libcs might be strict about this. --- misc/bstr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'misc') diff --git a/misc/bstr.h b/misc/bstr.h index a1e99dd4a5..6871da1c18 100644 --- a/misc/bstr.h +++ b/misc/bstr.h @@ -207,7 +207,7 @@ static inline int bstr_eatstart0(struct bstr *s, const char *prefix) } // create a pair (not single value!) for "%.*s" printf syntax -#define BSTR_P(bstr) (int)((bstr).len), (bstr).start +#define BSTR_P(bstr) (int)((bstr).len), ((bstr).start ? (char*)(bstr).start : "") #define WHITESPACE " \f\n\r\t\v" -- cgit v1.2.3