From 476fc65b0fda4fed099ee31b04b926d27e9a5f28 Mon Sep 17 00:00:00 2001 From: James Ross-Gowan Date: Tue, 7 Oct 2014 15:42:30 +1100 Subject: 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 --- misc/bstr.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'misc') 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) -- cgit v1.2.3