diff options
author | wm4 <wm4@nowhere> | 2015-01-12 14:43:52 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-01-12 14:43:52 +0100 |
commit | 4a7c6aaedfb083df202cc076c4ae856ff5aded03 (patch) | |
tree | 9bdd3e021724af1ecb3c0bcbd8ba6618a2e9647a /misc | |
parent | 8144d142e40b7ff185f33bf6a0d974958e873f8b (diff) | |
download | mpv-4a7c6aaedfb083df202cc076c4ae856ff5aded03.tar.bz2 mpv-4a7c6aaedfb083df202cc076c4ae856ff5aded03.tar.xz |
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.
Diffstat (limited to 'misc')
-rw-r--r-- | misc/bstr.h | 2 |
1 files changed, 1 insertions, 1 deletions
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" |