aboutsummaryrefslogtreecommitdiffhomepage
path: root/misc/bstr.c
diff options
context:
space:
mode:
authorGravatar James Ross-Gowan <rossymiles@gmail.com>2014-10-07 15:42:30 +1100
committerGravatar wm4 <wm4@nowhere>2014-10-07 08:45:27 +0200
commit476fc65b0fda4fed099ee31b04b926d27e9a5f28 (patch)
tree0561f91a9861da9111f42bc51f98449a52d83237 /misc/bstr.c
parentec7bc388d1d87c5a2d64dde85628d49e25a9f8fd (diff)
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/bstr.c')
-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)