[libxml2] Use strcmp when fuzzing
- From: Nick Wellnhofer <nwellnhof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libxml2] Use strcmp when fuzzing
- Date: Sat, 8 Aug 2020 19:06:31 +0000 (UTC)
commit 9de7b94d4ffbd11814008a5aa529b4ca77564921
Author: Nick Wellnhofer <wellnhofer aevum de>
Date: Sat Aug 8 20:37:30 2020 +0200
Use strcmp when fuzzing
This should improve data-flow-guided fuzzing.
xmlstring.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
---
diff --git a/xmlstring.c b/xmlstring.c
index 8d2e06f66..e8a1e45d1 100644
--- a/xmlstring.c
+++ b/xmlstring.c
@@ -130,16 +130,18 @@ xmlCharStrdup(const char *cur) {
int
xmlStrcmp(const xmlChar *str1, const xmlChar *str2) {
- register int tmp;
-
if (str1 == str2) return(0);
if (str1 == NULL) return(-1);
if (str2 == NULL) return(1);
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+ return(strcmp((const char *)str1, (const char *)str2));
+#else
do {
- tmp = *str1++ - *str2;
+ int tmp = *str1++ - *str2;
if (tmp != 0) return(tmp);
} while (*str2++ != 0);
return 0;
+#endif
}
/**
@@ -158,10 +160,14 @@ xmlStrEqual(const xmlChar *str1, const xmlChar *str2) {
if (str1 == str2) return(1);
if (str1 == NULL) return(0);
if (str2 == NULL) return(0);
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+ return(strcmp((const char *)str1, (const char *)str2) == 0);
+#else
do {
if (*str1++ != *str2) return(0);
} while (*str2++);
return(1);
+#endif
}
/**
@@ -204,18 +210,15 @@ xmlStrQEqual(const xmlChar *pref, const xmlChar *name, const xmlChar *str) {
int
xmlStrncmp(const xmlChar *str1, const xmlChar *str2, int len) {
- register int tmp;
-
if (len <= 0) return(0);
if (str1 == str2) return(0);
if (str1 == NULL) return(-1);
if (str2 == NULL) return(1);
-#ifdef __GNUC__
- tmp = strncmp((const char *)str1, (const char *)str2, len);
- return tmp;
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+ return(strncmp((const char *)str1, (const char *)str2, len));
#else
do {
- tmp = *str1++ - *str2;
+ int tmp = *str1++ - *str2;
if (tmp != 0 || --len == 0) return(tmp);
} while (*str2++ != 0);
return 0;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]