about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--docs/Changelog.md2
-rw-r--r--frida_mode/src/lib/lib.c6
-rw-r--r--instrumentation/compare-transform-pass.so.cc4
3 files changed, 6 insertions, 6 deletions
diff --git a/docs/Changelog.md b/docs/Changelog.md
index 8d9a0aa8..bccc6748 100644
--- a/docs/Changelog.md
+++ b/docs/Changelog.md
@@ -14,6 +14,8 @@
     - now also shows coverage reached
     - option -m shows only very relevant stats
     - option -n will not use color in the output
+  - instrumentation:
+    - fix for a few string compare transform functions for LAF
   - frida_mode:
     - fixes support for large map offsets
   - added benchmark/benchmark.sh if you want to see how good your fuzzing
diff --git a/frida_mode/src/lib/lib.c b/frida_mode/src/lib/lib.c
index d563b69b..7fac755a 100644
--- a/frida_mode/src/lib/lib.c
+++ b/frida_mode/src/lib/lib.c
@@ -44,8 +44,10 @@ static gboolean lib_find_exe(const GumModuleDetails *details,
 
   lib_details_t *lib_details = (lib_details_t *)user_data;
 
-  memcpy(lib_details->name, details->name, PATH_MAX);
-  memcpy(lib_details->path, details->path, PATH_MAX);
+  strncpy(lib_details->name, details->name, PATH_MAX);
+  strncpy(lib_details->path, details->path, PATH_MAX);
+  lib_details->name[PATH_MAX] = '\0';
+  lib_details->path[PATH_MAX] = '\0';
   lib_details->base_address = details->range->base_address;
   lib_details->size = details->range->size;
   return FALSE;
diff --git a/instrumentation/compare-transform-pass.so.cc b/instrumentation/compare-transform-pass.so.cc
index b0bbd39a..5a5415d7 100644
--- a/instrumentation/compare-transform-pass.so.cc
+++ b/instrumentation/compare-transform-pass.so.cc
@@ -228,7 +228,6 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
           isStrcmp &=
               (!FuncName.compare("strcmp") || !FuncName.compare("xmlStrcmp") ||
                !FuncName.compare("xmlStrEqual") ||
-               !FuncName.compare("g_strcmp0") ||
                !FuncName.compare("curl_strequal") ||
                !FuncName.compare("strcsequal") ||
                !FuncName.compare("g_strcmp0"));
@@ -239,7 +238,6 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
                !FuncName.compare("memcmp_const_time") ||
                !FuncName.compare("memcmpct"));
           isStrncmp &= (!FuncName.compare("strncmp") ||
-                        !FuncName.compare("xmlStrncmp") ||
                         !FuncName.compare("curl_strnequal") ||
                         !FuncName.compare("xmlStrncmp"));
           isStrcasecmp &= (!FuncName.compare("strcasecmp") ||
@@ -508,10 +506,8 @@ bool CompareTransform::transformCmps(Module &M, const bool processStrcmp,
         isCaseInsensitive = true;
 
       if (!Callee->getName().compare("xmlStrEqual") ||
-          !Callee->getName().compare("g_strcmp0") ||
           !Callee->getName().compare("curl_strequal") ||
           !Callee->getName().compare("strcsequal") ||
-          !Callee->getName().compare("xmlStrncmp") ||
           !Callee->getName().compare("curl_strnequal"))
         success_is_one = true;