summaryrefslogtreecommitdiffstats
path: root/misc
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-12 14:43:52 +0100
committerwm4 <wm4@nowhere>2015-01-12 14:43:52 +0100
commit4a7c6aaedfb083df202cc076c4ae856ff5aded03 (patch)
tree9bdd3e021724af1ecb3c0bcbd8ba6618a2e9647a /misc
parent8144d142e40b7ff185f33bf6a0d974958e873f8b (diff)
downloadmpv-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.h2
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"