From 82ba4f7d1b5d3a288457b7f4d0e796bef35e042e Mon Sep 17 00:00:00 2001
From: HiGarfield <HiGarfield@126.com>
Date: Thu, 9 Feb 2023 01:23:51 +0800
Subject: [PATCH 1/4] fix CMakeLists.txt

---
 CMakeLists.txt | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index ba34e55..3e11d66 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,17 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 
 set(CMAKE_CXX_STANDARD 11)
 
+execute_process(COMMAND git rev-parse HEAD
+                OUTPUT_VARIABLE GIT_VER
+                OUTPUT_STRIP_TRAILING_WHITESPACE
+                ERROR_QUIET)
+if (GIT_VER STREQUAL "")
+  set(GIT_VER "unknown")
+endif()
+file(WRITE git_version.h "const char *gitversion = \"${GIT_VER}\";")
+
+file(REMOVE makefile)
+
 set(SOURCE_FILES
         main.cpp 
         lib/md5.cpp

From e66eddd1d554c12a52497476fb79efde112de576 Mon Sep 17 00:00:00 2001
From: yancey <yancey@airgap.io>
Date: Sat, 22 Jul 2023 14:00:03 -0400
Subject: [PATCH 2/4] fix mem access problem reported by sanitizer

---
 CMakeLists.txt | 2 +-
 common.cpp     | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d84d982..b79c4d7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
 #note: experimental
-#      currently only used for generating `compile_commands.json` for clangd
+#      currently only used for generating `compile_commands.json` for clangd.
 #      to build this project, it's suggested to use `makefile` instead
 
 cmake_minimum_required(VERSION 3.7)
diff --git a/common.cpp b/common.cpp
index ffcddde..3d822ba 100644
--- a/common.cpp
+++ b/common.cpp
@@ -1127,8 +1127,8 @@ void print_binary_chars(const char *a, int len) {
 u32_t djb2(unsigned char *str, int len) {
     u32_t hash = 5381;
     int c;
-    int i = 0;
-    while (c = *str++, i++ != len) {
+    for (int i=0; i<len ;i++) {
+        c = *(str++);
         hash = ((hash << 5) + hash) ^ c; /* (hash * 33) ^ c */
     }
 
@@ -1139,8 +1139,8 @@ u32_t djb2(unsigned char *str, int len) {
 u32_t sdbm(unsigned char *str, int len) {
     u32_t hash = 0;
     int c;
-    int i = 0;
-    while (c = *str++, i++ != len) {
+    for (int i=0; i<len ;i++) {
+        c = *(str++);
         hash = c + (hash << 6) + (hash << 16) - hash;
     }
     // hash=htonl(hash);

From 87b878a09e5d160de76325e8960065d6a6bd8fd7 Mon Sep 17 00:00:00 2001
From: yancey <yancey@airgap.io>
Date: Sat, 22 Jul 2023 14:31:17 -0400
Subject: [PATCH 3/4] fix  stack-use-after-scope reported by sanitizer

---
 main.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/main.cpp b/main.cpp
index d40ca56..d2d0802 100644
--- a/main.cpp
+++ b/main.cpp
@@ -40,19 +40,19 @@ int main(int argc, char *argv[]) {
 
     pre_process_arg(argc, argv);
 
+    ev_signal signal_watcher_sigpipe;
+    ev_signal signal_watcher_sigterm;
+    ev_signal signal_watcher_sigint;
+
     if (program_mode == client_mode) {
         struct ev_loop *loop = ev_default_loop(0);
 #if !defined(__MINGW32__)
-        ev_signal signal_watcher_sigpipe;
         ev_signal_init(&signal_watcher_sigpipe, sigpipe_cb, SIGPIPE);
         ev_signal_start(loop, &signal_watcher_sigpipe);
 #endif
-
-        ev_signal signal_watcher_sigterm;
         ev_signal_init(&signal_watcher_sigterm, sigterm_cb, SIGTERM);
         ev_signal_start(loop, &signal_watcher_sigterm);
 
-        ev_signal signal_watcher_sigint;
         ev_signal_init(&signal_watcher_sigint, sigint_cb, SIGINT);
         ev_signal_start(loop, &signal_watcher_sigint);
     } else {

From f3f528e866d6871420ae8a311576d4a3433f15ec Mon Sep 17 00:00:00 2001
From: Yancey Wang <wangyucn@gmail.com>
Date: Sat, 22 Jul 2023 17:30:56 -0400
Subject: [PATCH 4/4] Revert "fix CMakeLists.txt"

---
 CMakeLists.txt | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9e15b14..b79c4d7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,17 +8,6 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 
 set(CMAKE_CXX_STANDARD 11)
 
-execute_process(COMMAND git rev-parse HEAD
-                OUTPUT_VARIABLE GIT_VER
-                OUTPUT_STRIP_TRAILING_WHITESPACE
-                ERROR_QUIET)
-if (GIT_VER STREQUAL "")
-  set(GIT_VER "unknown")
-endif()
-file(WRITE git_version.h "const char *gitversion = \"${GIT_VER}\";")
-
-file(REMOVE makefile)
-
 set(SOURCE_FILES
         main.cpp 
         lib/md5.cpp