summaryrefslogtreecommitdiffstats
path: root/misc
diff options
context:
space:
mode:
authorJames Ross-Gowan <rossymiles@gmail.com>2014-10-07 15:42:30 +1100
committerwm4 <wm4@nowhere>2014-10-07 08:45:27 +0200
commit476fc65b0fda4fed099ee31b04b926d27e9a5f28 (patch)
tree0561f91a9861da9111f42bc51f98449a52d83237 /misc
parentec7bc388d1d87c5a2d64dde85628d49e25a9f8fd (diff)
downloadmpv-476fc65b0fda4fed099ee31b04b926d27e9a5f28.tar.bz2
mpv-476fc65b0fda4fed099ee31b04b926d27e9a5f28.tar.xz
bstr: check strings before memcmp/strncasecmp
bstr.start can be NULL when bstr.len is 0, so don't call memcmp or strncasecmp if that's the case. Passing NULL to string functions is invalid C, even when the length is 0, and it causes Windows to raise an invalid parameter error. Should fix #1155
Diffstat (limited to 'misc')
-rw-r--r--misc/bstr.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/misc/bstr.c b/misc/bstr.c
index a6268b4d53..7a5a1a1270 100644
--- a/misc/bstr.c
+++ b/misc/bstr.c
@@ -33,7 +33,9 @@
int bstrcmp(struct bstr str1, struct bstr str2)
{
- int ret = memcmp(str1.start, str2.start, FFMIN(str1.len, str2.len));
+ int ret = 0;
+ if (str1.len && str2.len)
+ ret = memcmp(str1.start, str2.start, FFMIN(str1.len, str2.len));
if (!ret) {
if (str1.len == str2.len)
@@ -48,7 +50,9 @@ int bstrcmp(struct bstr str1, struct bstr str2)
int bstrcasecmp(struct bstr str1, struct bstr str2)
{
- int ret = strncasecmp(str1.start, str2.start, FFMIN(str1.len, str2.len));
+ int ret = 0;
+ if (str1.len && str2.len)
+ ret = strncasecmp(str1.start, str2.start, FFMIN(str1.len, str2.len));
if (!ret) {
if (str1.len == str2.len)